annotate libvo/vo_mpegpes.c @ 36920:40ad45360c8a

Replace old item 'potmeter' by new item 'pimage'. Recent versions of the X11/GTK GUI didn't allow to control a potmeter, because that didn't seem to make any sense. In order to get rid of the confusing potmeter that doesn't distinguish from a hpotmeter and in order to allow the more useful behaviour recent versions of the X11/GTK GUI have been utilized (and because we're still supporting item 'potmeter' for reasons of compatibility with old skins), introduce new item 'pimage' that reuses most of the current potmeter code. Additionally, remove remaining code and documentation of 'potmeter'.
author ib
date Mon, 17 Mar 2014 12:29:46 +0000
parents 5d3f93051de9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
1 /*
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
2 * based on: test_av.c - test program for new API
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
3 *
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
4 * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
5 * & Marcus Metzler <marcus@convergence.de>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
6 * for convergence integrated media GmbH
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
7 *
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
8 * MPEG-PS multiplexer, part of FFmpeg
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
9 * Copyright Gerard Lantau (see http://ffmpeg.org)
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
10 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
11 * This file is part of MPlayer.
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
12 *
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
13 * MPlayer is free software; you can redistribute it and/or modify
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
14 * it under the terms of the GNU General Public License as published by
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
15 * the Free Software Foundation; either version 2 of the License, or
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
16 * (at your option) any later version.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
17 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
18 * MPlayer is distributed in the hope that it will be useful,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
21 * GNU General Public License for more details.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
22 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
23 * You should have received a copy of the GNU General Public License along
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
24 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27431
diff changeset
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
26 */
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
27
6239
22cf38f95151 warning fix (write()/close() require unistd.h)
pl
parents: 5881
diff changeset
28 #include "config.h"
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
29 #include <stdio.h>
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
30 #include <stdlib.h>
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
31 #include <string.h>
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4596
diff changeset
32 #include <errno.h>
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
33 #include <sys/types.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
34 #include <sys/stat.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
35 #include <fcntl.h>
6239
22cf38f95151 warning fix (write()/close() require unistd.h)
pl
parents: 5881
diff changeset
36 #include <unistd.h>
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
37
5877
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
38 #include "mp_msg.h"
27369
8598536ca4f5 Set HAVE_DVB in configure when HAVE_DVB_HEAD is defined
diego
parents: 27368
diff changeset
39
27430
8bc08d1b115d 100l: Rename missed preprocessor directives from a HAVE_ prefix to CONFIG_.
diego
parents: 27369
diff changeset
40 #ifdef CONFIG_DVB
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
41 #define true 1
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
42 #define false 0
27431
bb738b9ea7c4 Use '#include <poll.h>' instead of '#include <sys/poll.h>'.
diego
parents: 27430
diff changeset
43 #include <poll.h>
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
44
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
45 #include <sys/ioctl.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
46 #include <stdio.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
47 #include <time.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
48
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
49 #include <linux/dvb/dmx.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
50 #include <linux/dvb/frontend.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
51 #include <linux/dvb/video.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
52 #include <linux/dvb/audio.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
53 #endif
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
54
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
55 #include "config.h"
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
56 #include "video_out.h"
36517
5d3f93051de9 Remove empty draw_slice and draw_frame stubs.
reimar
parents: 33709
diff changeset
57 #define NO_DRAW_SLICE
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
58 #include "video_out_internal.h"
19148
3b839a8d297a simplified mpeg packetizer used by hw mpeg decoders/vo - first round
nicodvb
parents: 16171
diff changeset
59 #include "libmpdemux/mpeg_packetizer.h"
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
60
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
61 int vo_mpegpes_fd=-1;
32070
acb0f1b02040 Rename vo_mpegpes_fd2 variable to ao_mpegpes_fd.
diego
parents: 31428
diff changeset
62 extern int ao_mpegpes_fd;
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
63
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28446
diff changeset
64 static const vo_info_t info =
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
65 {
27430
8bc08d1b115d 100l: Rename missed preprocessor directives from a HAVE_ prefix to CONFIG_.
diego
parents: 27369
diff changeset
66 #ifdef CONFIG_DVB
27368
a50cc6945dfd cosmetics: typo fixes
diego
parents: 25558
diff changeset
67 "MPEG-PES to DVB card",
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
68 #else
27368
a50cc6945dfd cosmetics: typo fixes
diego
parents: 25558
diff changeset
69 "MPEG-PES file",
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
70 #endif
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
71 "mpegpes",
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
72 "A'rpi",
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
73 ""
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
74 };
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
75
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
76 const LIBVO_EXTERN (mpegpes)
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7860
diff changeset
77
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
78 static int
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13048
diff changeset
79 config(uint32_t s_width, uint32_t s_height, uint32_t width, uint32_t height, uint32_t flags, char *title, uint32_t format)
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
80 {
27430
8bc08d1b115d 100l: Rename missed preprocessor directives from a HAVE_ prefix to CONFIG_.
diego
parents: 27369
diff changeset
81 #ifdef CONFIG_DVB
5877
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
82 switch(s_height){
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
83 case 288:
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
84 case 576:
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
85 case 240:
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
86 case 480:
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
87 break;
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
88 default:
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
89 mp_msg(MSGT_VO,MSGL_ERR,"DVB: height=%d not supported (try 240/480 (ntsc) or 288/576 (pal)\n",s_height);
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
90 return -1;
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
91 }
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
92 #endif
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
93 return 0;
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
94 }
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
95
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
96 static int preinit(const char *arg){
27430
8bc08d1b115d 100l: Rename missed preprocessor directives from a HAVE_ prefix to CONFIG_.
diego
parents: 27369
diff changeset
97 #ifdef CONFIG_DVB
25558
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
98 int card = -1;
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
99 char vo_file[30], ao_file[30], *tmp;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28446
diff changeset
100
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
101 if(arg != NULL){
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
102 if((tmp = strstr(arg, "card=")) != NULL) {
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
103 card = atoi(&tmp[5]);
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
104 if((card < 1) || (card > 4)) {
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
105 mp_msg(MSGT_VO, MSGL_ERR, "DVB card number must be between 1 and 4\n");
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
106 return -1;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
107 }
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
108 card--;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
109 arg = NULL;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
110 }
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
111 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28446
diff changeset
112
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
113 if(!arg){
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
114 //|O_NONBLOCK
25558
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
115 //search the first usable card
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
116 if(card==-1) {
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
117 int n;
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
118 for(n=0; n<4; n++) {
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
119 sprintf(vo_file, "/dev/dvb/adapter%d/video0", n);
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
120 if(access(vo_file, F_OK | W_OK)==0) {
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
121 card = n;
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
122 break;
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
123 }
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
124 }
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
125 }
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
126 if(card==-1) {
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
127 mp_msg(MSGT_VO,MSGL_INFO, "Couldn't find a usable dvb video device, exiting\n");
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
128 return -1;
634dfaa85718 when :card isn't specified by the user search the first available card
nicodvb
parents: 25220
diff changeset
129 }
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
130 mp_msg(MSGT_VO,MSGL_INFO, "Opening /dev/dvb/adapter%d/video0+audio0\n", card);
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
131 sprintf(vo_file, "/dev/dvb/adapter%d/video0", card);
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
132 sprintf(ao_file, "/dev/dvb/adapter%d/audio0", card);
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
133 if((vo_mpegpes_fd = open(vo_file,O_RDWR)) < 0){
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
134 perror("DVB VIDEO DEVICE: ");
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
135 return -1;
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
136 }
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
137 if ( (ioctl(vo_mpegpes_fd,VIDEO_SET_BLANK, false) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
138 perror("DVB VIDEO SET BLANK: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
139 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
140 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
141 if ( (ioctl(vo_mpegpes_fd,VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
142 perror("DVB VIDEO SELECT SOURCE: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
143 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
144 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
145 if ( (ioctl(vo_mpegpes_fd,VIDEO_PLAY) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
146 perror("DVB VIDEO PLAY: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
147 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
148 }
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
149 return 0;
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
150 }
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
151 #endif
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
152 arg = (arg ? arg : "grab.mpg");
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
153 mp_msg(MSGT_VO,MSGL_INFO, "Saving PES stream to %s\n", arg);
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
154 vo_mpegpes_fd=open(arg,O_WRONLY|O_CREAT,0666);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28446
diff changeset
155 if(vo_mpegpes_fd<0){
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
156 perror("vo_mpegpes");
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
157 return -1;
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
158 }
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
159 return 0;
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
160 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
161
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
162
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
163 static void draw_osd(void)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
164 {
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
165 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
166
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
167
31428
68c60d07cdbc Mark data parameter of my_write function as const.
diego
parents: 30776
diff changeset
168 static int my_write(const unsigned char* data,int len){
19153
8df0a51b0e37 fix compilation if DVB is not defined
ben
parents: 19150
diff changeset
169 int orig_len = len;
27430
8bc08d1b115d 100l: Rename missed preprocessor directives from a HAVE_ prefix to CONFIG_.
diego
parents: 27369
diff changeset
170 #ifdef CONFIG_DVB
2066
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
171 #define NFD 2
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
172 struct pollfd pfd[NFD];
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
173
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
174 // printf("write %d bytes \n",len);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
175
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
176 pfd[0].fd = vo_mpegpes_fd;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
177 pfd[0].events = POLLOUT;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28446
diff changeset
178
32070
acb0f1b02040 Rename vo_mpegpes_fd2 variable to ao_mpegpes_fd.
diego
parents: 31428
diff changeset
179 pfd[1].fd = ao_mpegpes_fd;
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
180 pfd[1].events = POLLOUT;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
181
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
182 while(len>0){
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
183 if (poll(pfd,NFD,1)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
184 if (pfd[0].revents & POLLOUT){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
185 int ret=write(vo_mpegpes_fd,data,len);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28446
diff changeset
186 // printf("ret=%d \n",ret);
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
187 if(ret<=0){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
188 perror("write");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
189 usleep(0);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
190 } else {
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
191 len-=ret; data+=ret;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
192 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
193 } else usleep(1000);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
194 }
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
195 }
2066
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
196
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
197 #else
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
198 write(vo_mpegpes_fd,data,len); // write to file
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
199 #endif
19150
8f2b737e2a70 my_write() must return the bytes written
nicodvb
parents: 19148
diff changeset
200 return orig_len;
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
201 }
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
202
30556
358ac046eccc libvo: Mark functions not used outside of their files as static.
diego
parents: 29263
diff changeset
203 static void send_pes_packet(unsigned char* data, int len, int id, int timestamp)
358ac046eccc libvo: Mark functions not used outside of their files as static.
diego
parents: 29263
diff changeset
204 {
19148
3b839a8d297a simplified mpeg packetizer used by hw mpeg decoders/vo - first round
nicodvb
parents: 16171
diff changeset
205 send_mpeg_pes_packet (data, len, id, timestamp, 1, my_write);
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
206 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
207
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
208 static int draw_frame(uint8_t * src[])
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
209 {
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
210 vo_mpegpes_t *p=(vo_mpegpes_t *)src[0];
5877
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
211 send_pes_packet(p->data,p->size,p->id,(p->timestamp>0)?p->timestamp:vo_pts); // video data
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
212 return 0;
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
213 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
214
1935
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
215 static void flip_page (void)
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
216 {
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
217 }
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
218
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
219 static int
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
220 query_format(uint32_t format)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
221 {
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13048
diff changeset
222 if(format==IMGFMT_MPEGPES) return VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW|VFCAP_TIMER;
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
223 return 0;
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
224 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
225
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
226 static void
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
227 uninit(void)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
228 {
32070
acb0f1b02040 Rename vo_mpegpes_fd2 variable to ao_mpegpes_fd.
diego
parents: 31428
diff changeset
229 if(ao_mpegpes_fd >= 0 && ao_mpegpes_fd != vo_mpegpes_fd) close(ao_mpegpes_fd);
33709
d7d180520491 Cosmetics: Fix strange space placement.
reimar
parents: 33305
diff changeset
230 ao_mpegpes_fd = -1;
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
231 if(vo_mpegpes_fd>=0){ close(vo_mpegpes_fd);vo_mpegpes_fd=-1;}
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
232 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
233
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
234
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
235 static void check_events(void)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
236 {
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
237 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
238
33305
ddb45e9443ec Remove the variable arguments from the libvo control() functions.
iive
parents: 32070
diff changeset
239 static int control(uint32_t request, void *data)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4341
diff changeset
240 {
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
241 switch (request) {
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
242 case VOCTRL_QUERY_FORMAT:
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
243 return query_format(*((uint32_t*)data));
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
244 }
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
245 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4341
diff changeset
246 }