annotate libvo/vo_mpegpes.c @ 14742:76d461a061df

Unified colorkey code for vo xv and vo xvmc. Made the code also more flexible. Colorkey drawing is now by default done as proposed by Marko Macek. Patch also approved by iive.
author al
date Sun, 20 Feb 2005 22:43:25 +0000
parents 2f150c190f7a
children 05aa13cdf92f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5059
8914f0bb6f35 using libFAME...
arpi
parents: 4737
diff changeset
1 // Don't change for DVB card, it must be 2048
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
2 #define PES_MAX_SIZE 2048
5059
8914f0bb6f35 using libFAME...
arpi
parents: 4737
diff changeset
3
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
4 /*
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
5 * Based on:
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
6 *
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
7 * test_av.c - Test program for new API
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
8 *
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
9 * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
10 * & Marcus Metzler <marcus@convergence.de>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
11 * for convergence integrated media GmbH
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
12 *
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
13 * libav - MPEG-PS multiplexer, part of ffmpeg
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
14 * Copyright Gerard Lantau (see http://ffmpeg.sf.net)
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
15 *
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
16 */
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
17
6239
22cf38f95151 warning fix (write()/close() require unistd.h)
pl
parents: 5881
diff changeset
18 #include "config.h"
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
19 #include <stdio.h>
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
20 #include <stdlib.h>
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
21 #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
22 #include <errno.h>
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
23 #include <sys/types.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
24 #include <sys/stat.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
25 #include <fcntl.h>
6239
22cf38f95151 warning fix (write()/close() require unistd.h)
pl
parents: 5881
diff changeset
26 #include <unistd.h>
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
27
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
28 #include "mp_msg.h"
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
29 #ifdef HAVE_DVB_HEAD
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
30 #define HAVE_DVB 1
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
31 #endif
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
32 #ifdef HAVE_DVB
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
33 #ifndef HAVE_DVB_HEAD
2066
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
34 #include <sys/poll.h>
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
35
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
36 #include <sys/ioctl.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
37 #include <stdio.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
38 #include <time.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
39
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
40 #include <ost/dmx.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
41 #include <ost/frontend.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
42 #include <ost/sec.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
43 #include <ost/video.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
44 #include <ost/audio.h>
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
45
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
46 #else
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
47 #define true 1
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
48 #define false 0
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
49 #include <sys/poll.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
50
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
51 #include <sys/ioctl.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
52 #include <stdio.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
53 #include <time.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
54
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
55 #include <linux/dvb/dmx.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
56 #include <linux/dvb/frontend.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
57 #include <linux/dvb/video.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
58 #include <linux/dvb/audio.h>
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
59 #endif
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
60 #endif
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
61
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
62 #include "config.h"
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
63 #include "video_out.h"
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
64 #include "video_out_internal.h"
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
65
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
66 int vo_mpegpes_fd=-1;
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
67 int vo_mpegpes_fd2=-1;
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
68
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7860
diff changeset
69 static vo_info_t info =
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
70 {
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
71 #ifdef HAVE_DVB
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
72 "Mpeg-PES to DVB card",
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
73 #else
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
74 "Mpeg-PES file",
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
75 #endif
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
76 "mpegpes",
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
77 "A'rpi",
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
78 ""
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
79 };
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
80
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7860
diff changeset
81 LIBVO_EXTERN (mpegpes)
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7860
diff changeset
82
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
83 static uint32_t
7124
eca7dbad0166 finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents: 6273
diff changeset
84 config(uint32_t s_width, uint32_t s_height, uint32_t width, uint32_t height, uint32_t fullscreen, char *title, uint32_t format)
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
85 {
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
86 #ifdef HAVE_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
87 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
88 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
89 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
90 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
91 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
92 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
93 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
94 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
95 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
96 }
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
97 #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
98 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
99 }
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
100
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
101 static uint32_t preinit(const char *arg){
93de400ad48e libfame code removed (use -vop fame/-vop lavc), init code moved to preinit, height checks added to config()
arpi
parents: 5844
diff changeset
102 #ifdef HAVE_DVB
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
103 int card = 0;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
104 char vo_file[30], ao_file[30], *tmp;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
105
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
106 if(arg != NULL){
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
107 if((tmp = strstr(arg, "card=")) != NULL) {
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
108 card = atoi(&tmp[5]);
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
109 if((card < 1) || (card > 4)) {
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
110 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
111 return -1;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
112 }
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
113 card--;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
114 arg = NULL;
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
115 }
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
116 }
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
117
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
118 if(!arg){
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
119 //|O_NONBLOCK
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
120 #ifndef HAVE_DVB_HEAD
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
121 mp_msg(MSGT_VO,MSGL_INFO, "Opening /dev/ost/video+audio\n");
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
122 sprintf(vo_file, "/dev/ost/video");
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
123 sprintf(ao_file, "/dev/ost/audio");
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
124 #else
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
125 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
126 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
127 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
128 #endif
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
129 if((vo_mpegpes_fd = open(vo_file,O_RDWR)) < 0){
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
130 perror("DVB VIDEO DEVICE: ");
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
131 return -1;
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
132 }
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
133 if((vo_mpegpes_fd2 = open(ao_file,O_RDWR|O_NONBLOCK)) < 0){
8594
00326905484b DVB-HEAD (aka. NEWSTRUCT) detection & support
arpi
parents: 8148
diff changeset
134 perror("DVB AUDIO 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 1
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
146 if ( (ioctl(vo_mpegpes_fd2,AUDIO_SELECT_SOURCE, AUDIO_SOURCE_MEMORY) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
147 perror("DVB AUDIO SELECT SOURCE: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
148 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
149 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
150 if ( (ioctl(vo_mpegpes_fd2,AUDIO_PLAY) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
151 perror("DVB AUDIO PLAY: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
152 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
153 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
154 #else
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
155 if ( (ioctl(vo_mpegpes_fd2,AUDIO_STOP,0) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
156 perror("DVB AUDIO STOP: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
157 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
158 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
159 #endif
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
160 if ( (ioctl(vo_mpegpes_fd,VIDEO_PLAY) < 0)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
161 perror("DVB VIDEO PLAY: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
162 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
163 }
7860
0432eeab8f1e re-enabled a-v sync
arpi
parents: 7672
diff changeset
164 if ( (ioctl(vo_mpegpes_fd2,AUDIO_SET_AV_SYNC, true) < 0)){
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
165 perror("DVB AUDIO SET AV SYNC: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
166 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
167 }
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
168 // if ( (ioctl(vo_mpegpes_fd2,AUDIO_SET_MUTE, false) < 0)){
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
169 if ( (ioctl(vo_mpegpes_fd2,AUDIO_SET_MUTE, true) < 0)){
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
170 perror("DVB AUDIO SET MUTE: ");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
171 return -1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
172 }
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
173 return 0;
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
174 }
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
175 #endif
13048
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
176 arg = (arg ? arg : "grab.mpg");
2f150c190f7a user can select dvb card number to use (V3 api only)
nicodvb
parents: 8917
diff changeset
177 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
178 vo_mpegpes_fd=open(arg,O_WRONLY|O_CREAT,0666);
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
179 if(vo_mpegpes_fd<0){
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
180 perror("vo_mpegpes");
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
181 return -1;
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
182 }
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
183 vo_mpegpes_fd2=vo_mpegpes_fd;
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
184 return 0;
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
185 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
186
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
187
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
188 static void draw_osd(void)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
189 {
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
190 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
191
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
192
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
193 static void my_write(unsigned char* data,int len){
2066
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
194 #ifdef HAVE_DVB
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
195 #define NFD 2
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
196 struct pollfd pfd[NFD];
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
197
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
198 // printf("write %d bytes \n",len);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
199
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
200 pfd[0].fd = vo_mpegpes_fd;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
201 pfd[0].events = POLLOUT;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
202
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
203 pfd[1].fd = vo_mpegpes_fd2;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
204 pfd[1].events = POLLOUT;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
205
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
206 while(len>0){
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
207 if (poll(pfd,NFD,1)){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
208 if (pfd[0].revents & POLLOUT){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
209 int ret=write(vo_mpegpes_fd,data,len);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
210 // printf("ret=%d \n",ret);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
211 if(ret<=0){
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
212 perror("write");
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
213 usleep(0);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
214 } else {
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
215 len-=ret; data+=ret;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
216 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
217 } else usleep(1000);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
218 }
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
219 }
2066
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
220
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
221 #else
2b14cad013b7 using poll() only for DVB card - not required for file write
arpi
parents: 1986
diff changeset
222 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
223 #endif
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
224 }
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
225
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
226 static unsigned char pes_header[PES_MAX_SIZE];
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
227
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
228 void send_pes_packet(unsigned char* data,int len,int id,int timestamp){
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
229 int ptslen=timestamp?5:1;
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
230
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
231 // startcode:
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
232 pes_header[0]=pes_header[1]=0;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
233 pes_header[2]=id>>8; pes_header[3]=id&255;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
234
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
235 while(len>0){
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
236 int payload_size=len; // data + PTS
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
237 if(6+ptslen+payload_size>PES_MAX_SIZE) payload_size=PES_MAX_SIZE-(6+ptslen);
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
238
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
239 // construct PES header: (code from ffmpeg's libav)
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
240 // packetsize:
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
241 pes_header[4]=(ptslen+payload_size)>>8;
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
242 pes_header[5]=(ptslen+payload_size)&255;
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
243
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
244 if(ptslen==5){
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
245 int x;
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
246 // presentation time stamp:
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
247 x=(0x02 << 4) | (((timestamp >> 30) & 0x07) << 1) | 1;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
248 pes_header[6]=x;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
249 x=((((timestamp >> 15) & 0x7fff) << 1) | 1);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
250 pes_header[7]=x>>8; pes_header[8]=x&255;
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
251 x=((((timestamp) & 0x7fff) << 1) | 1);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
252 pes_header[9]=x>>8; pes_header[10]=x&255;
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
253 } else {
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
254 // stuffing and header bits:
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
255 pes_header[6]=0x0f;
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
256 }
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
257
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
258 memcpy(&pes_header[6+ptslen],data,payload_size);
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
259 my_write(pes_header,6+ptslen+payload_size);
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
260
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
261 len-=payload_size; data+=payload_size;
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
262 ptslen=1; // store PTS only once, at first packet!
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
263 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
264
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
265 // printf("PES: draw frame! pts=%d size=%d \n",timestamp,len);
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
266
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
267 }
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
268
4299
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
269 void send_lpcm_packet(unsigned char* data,int len,int id,unsigned int timestamp,int freq_id){
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
270
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
271 int ptslen=timestamp?5:0;
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
272
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
273 // startcode:
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
274 pes_header[0]=pes_header[1]=0;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
275 pes_header[2]=1; pes_header[3]=0xBD;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
276
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
277 while(len>=4){
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
278 int payload_size;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
279
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
280 payload_size=PES_MAX_SIZE-6-20; // max possible data len
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
281 if(payload_size>len) payload_size=len;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
282 payload_size&=(~3); // align!
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
283
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
284 //if(6+payload_size>PES_MAX_SIZE) payload_size=PES_MAX_SIZE-6;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
285
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
286 // packetsize:
4299
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
287 pes_header[4]=(payload_size+3+ptslen+7)>>8;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
288 pes_header[5]=(payload_size+3+ptslen+7)&255;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
289
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
290 // stuffing:
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
291 // TTCCxxxx CC=css TT=type: 1=STD 0=mpeg1 2=vob
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
292 pes_header[6]=0x81;
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
293
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
294 // FFxxxxxx FF=pts flags=2 vs 0
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
295 pes_header[7]=ptslen ? 0x80 : 0;
4299
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
296
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
297 // hdrlen:
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
298 pes_header[8]=ptslen;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
299
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
300 if(ptslen){
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
301 int x;
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
302 // presentation time stamp:
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
303 x=(0x02 << 4) | (((timestamp >> 30) & 0x07) << 1) | 1;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
304 pes_header[9]=x;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
305 x=((((timestamp >> 15) & 0x7fff) << 1) | 1);
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
306 pes_header[10]=x>>8; pes_header[11]=x&255;
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
307 x=((((timestamp) & 0x7fff) << 1) | 1);
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
308 pes_header[12]=x>>8; pes_header[13]=x&255;
4299
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
309 }
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
310
4299
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
311 // ============ LPCM header: (7 bytes) =================
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
312 // Info by mocm@convergence.de
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
313
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
314 // ID:
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
315 pes_header[ptslen+9]=id;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
316
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
317 // number of frames:
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
318 pes_header[ptslen+10]=0x07;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
319
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
320 // first acces unit pointer, i.e. start of audio frame:
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
321 pes_header[ptslen+11]=0x00;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
322 pes_header[ptslen+12]=0x04;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
323
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
324 // audio emphasis on-off 1 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
325 // audio mute on-off 1 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
326 // reserved 1 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
327 // audio frame number 5 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
328 pes_header[ptslen+13]=0x0C;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
329
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
330 // quantization word length 2 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
331 // audio sampling frequency (48khz = 0, 96khz = 1) 2 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
332 // reserved 1 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
333 // number of audio channels - 1 (e.g. stereo = 1) 3 bit
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
334 pes_header[ptslen+14]=1|(freq_id<<4);
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
335
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
336 // dynamic range control (0x80 if off)
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
337 pes_header[ptslen+15]=0x80;
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
338
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
339 memcpy(&pes_header[6+3+ptslen+7],data,payload_size);
8e157167cee5 LPCM write code rewritten, thanks to Marcus at mocm@convergence.de
arpi
parents: 2727
diff changeset
340 my_write(pes_header,6+3+ptslen+7+payload_size);
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
341
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
342 len-=payload_size; data+=payload_size;
4306
f11e25b77c1e cleanup of video packet writer, PTS sent only once
arpi
parents: 4299
diff changeset
343 ptslen=0; // store PTS only once, at first packet!
2706
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
344 }
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
345
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
346 // printf("PES: draw frame! pts=%d size=%d \n",timestamp,len);
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
347
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
348 }
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
349
3066369adb32 audio packet writting added
arpi
parents: 2496
diff changeset
350
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
351 static uint32_t draw_frame(uint8_t * src[])
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
352 {
1872
2fe0e11bab3c file writer implemented
arpi
parents: 1871
diff changeset
353 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
354 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
355 return 0;
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
356 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
357
1935
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
358 static void flip_page (void)
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
359 {
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
360 }
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
361
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
362 static uint32_t draw_slice(uint8_t *srcimg[], int stride[], int w,int h,int x0,int y0)
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
363 {
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
364 return 0;
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
365 }
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
366
fcd39f3b13d4 YV12 support (using libavcodec for mpeg1-I encoding)
arpi
parents: 1876
diff changeset
367
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
368 static uint32_t
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
369 query_format(uint32_t format)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
370 {
5566
e01c664def74 VFCAP added
arpi
parents: 5560
diff changeset
371 if(format==IMGFMT_MPEGPES) return 3|VFCAP_TIMER;
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
372 return 0;
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
373 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
374
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
375 static void
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
376 uninit(void)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
377 {
7672
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
378 if(vo_mpegpes_fd2>=0 && vo_mpegpes_fd2!=vo_mpegpes_fd) close(vo_mpegpes_fd2);
e6b46875e1b9 - fixed a 10l bug: setting PTS flag even if no PTS stored
arpi
parents: 7124
diff changeset
379 vo_mpegpes_fd2=-1;
1876
220475b1676a PS multiplexing fixed
arpi
parents: 1872
diff changeset
380 if(vo_mpegpes_fd>=0){ close(vo_mpegpes_fd);vo_mpegpes_fd=-1;}
1871
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
381 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
382
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
383
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
384 static void check_events(void)
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
385 {
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
386 }
cb5dde69354b Mpeg PES added
arpi
parents:
diff changeset
387
4596
c35d7ce151b3 10000hl to Holm... control MUST BE static...
arpi
parents: 4592
diff changeset
388 static uint32_t control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4341
diff changeset
389 {
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
390 switch (request) {
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
391 case VOCTRL_QUERY_FORMAT:
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
392 return query_format(*((uint32_t*)data));
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
393 }
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
394 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4341
diff changeset
395 }