summaryrefslogtreecommitdiffstats
path: root/libmpdemux/video.c
diff options
context:
space:
mode:
authornicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-03-06 21:10:01 +0000
committernicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-03-06 21:10:01 +0000
commitc596f03a8ab95586e7cdf939fe0f2e82453c5ae2 (patch)
treeb31ddacef867fa011344821cabec5ca06891b527 /libmpdemux/video.c
parentd13d95f551f018681509b88e0f6d936297408630 (diff)
downloadmpv-c596f03a8ab95586e7cdf939fe0f2e82453c5ae2.tar.bz2
mpv-c596f03a8ab95586e7cdf939fe0f2e82453c5ae2.tar.xz
added support for other codecs (mpeg4/h264/aac) in mpeg-ps parsing the PSM
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14924 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/video.c')
-rw-r--r--libmpdemux/video.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/libmpdemux/video.c b/libmpdemux/video.c
index 5b98af0de9..693dab2e94 100644
--- a/libmpdemux/video.c
+++ b/libmpdemux/video.c
@@ -46,7 +46,7 @@ enum {
if((d_video->demuxer->file_format == DEMUXER_TYPE_PVA) ||
(d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_ES) ||
- (d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_PS) ||
+ (d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_PS && ((! sh_video->format) || (sh_video->format==0x10000001) || (sh_video->format==0x10000002))) ||
(d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_TY) ||
(d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_TS && ((sh_video->format==0x10000001) || (sh_video->format==0x10000002)))
#ifdef STREAMING_LIVE_DOT_COM
@@ -55,11 +55,13 @@ if((d_video->demuxer->file_format == DEMUXER_TYPE_PVA) ||
)
video_codec = VIDEO_MPEG12;
else if((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG4_ES) ||
- ((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000004))
+ ((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000004)) ||
+ ((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_PS) && (sh_video->format==0x10000004))
)
video_codec = VIDEO_MPEG4;
else if((d_video->demuxer->file_format == DEMUXER_TYPE_H264_ES) ||
- ((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000005))
+ ((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000005)) ||
+ ((d_video->demuxer->file_format == DEMUXER_TYPE_MPEG_PS) && (sh_video->format==0x10000005))
)
video_codec = VIDEO_H264;
else
@@ -400,7 +402,8 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char**
*start=NULL;
- if(demuxer->file_format==DEMUXER_TYPE_MPEG_ES || demuxer->file_format==DEMUXER_TYPE_MPEG_PS
+ if(demuxer->file_format==DEMUXER_TYPE_MPEG_ES ||
+ (demuxer->file_format==DEMUXER_TYPE_MPEG_PS && ((! sh_video->format) || (sh_video->format==0x10000001) || (sh_video->format==0x10000002)))
|| demuxer->file_format==DEMUXER_TYPE_PVA ||
((demuxer->file_format==DEMUXER_TYPE_MPEG_TS) && ((sh_video->format==0x10000001) || (sh_video->format==0x10000002)))
|| demuxer->file_format==DEMUXER_TYPE_MPEG_TY
@@ -493,17 +496,22 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char**
telecine=1;
}
- } else if((demuxer->file_format==DEMUXER_TYPE_MPEG4_ES) || ((demuxer->file_format==DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000004))){
+ } else if((demuxer->file_format==DEMUXER_TYPE_MPEG4_ES) || ((demuxer->file_format==DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000004)) ||
+ ((demuxer->file_format==DEMUXER_TYPE_MPEG_PS) && (sh_video->format==0x10000004))
+ ){
//
while(videobuf_len<VIDEOBUFFER_SIZE-MAX_VIDEO_PACKET_SIZE){
int i=sync_video_packet(d_video);
+ if(!i) return -1;
if(!read_video_packet(d_video)) return -1; // EOF
if(i==0x1B6) break;
}
*start=videobuffer; in_size=videobuf_len;
videobuf_len=0;
- } else if(demuxer->file_format==DEMUXER_TYPE_H264_ES || ((demuxer->file_format==DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000005))){
+ } else if(demuxer->file_format==DEMUXER_TYPE_H264_ES || ((demuxer->file_format==DEMUXER_TYPE_MPEG_TS) && (sh_video->format==0x10000005)) ||
+ ((demuxer->file_format==DEMUXER_TYPE_MPEG_PS) && (sh_video->format==0x10000005))
+ ){
//
while(videobuf_len<VIDEOBUFFER_SIZE-MAX_VIDEO_PACKET_SIZE){
int i=sync_video_packet(d_video);