comparison libmpdemux/demux_ts.c @ 36379:847bc950322a

Support HEVC in native mpeg-ts demuxer.
author cehoyos
date Thu, 17 Oct 2013 09:55:57 +0000
parents 3828cde710a2
children 323fb622da7e
comparison
equal deleted inserted replaced
36378:939ec5ba0c58 36379:847bc950322a
71 VIDEO_MPEG2 = 0x10000002, 71 VIDEO_MPEG2 = 0x10000002,
72 VIDEO_MPEG4 = 0x10000004, 72 VIDEO_MPEG4 = 0x10000004,
73 VIDEO_H264 = 0x10000005, 73 VIDEO_H264 = 0x10000005,
74 VIDEO_AVC = mmioFOURCC('a', 'v', 'c', '1'), 74 VIDEO_AVC = mmioFOURCC('a', 'v', 'c', '1'),
75 VIDEO_DIRAC = mmioFOURCC('d', 'r', 'a', 'c'), 75 VIDEO_DIRAC = mmioFOURCC('d', 'r', 'a', 'c'),
76 VIDEO_HEVC = mmioFOURCC('H', 'E', 'V', 'C'),
76 VIDEO_VC1 = mmioFOURCC('W', 'V', 'C', '1'), 77 VIDEO_VC1 = mmioFOURCC('W', 'V', 'C', '1'),
77 AUDIO_MP2 = 0x50, 78 AUDIO_MP2 = 0x50,
78 AUDIO_A52 = 0x2000, 79 AUDIO_A52 = 0x2000,
79 AUDIO_DTS = 0x2001, 80 AUDIO_DTS = 0x2001,
80 AUDIO_LPCM_BE = 0x10001, 81 AUDIO_LPCM_BE = 0x10001,
277 case VIDEO_MPEG2: 278 case VIDEO_MPEG2:
278 case VIDEO_MPEG4: 279 case VIDEO_MPEG4:
279 case VIDEO_H264: 280 case VIDEO_H264:
280 case VIDEO_AVC: 281 case VIDEO_AVC:
281 case VIDEO_DIRAC: 282 case VIDEO_DIRAC:
283 case VIDEO_HEVC:
282 case VIDEO_VC1: 284 case VIDEO_VC1:
283 return 1; 285 return 1;
284 } 286 }
285 return 0; 287 return 0;
286 } 288 }
875 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO H264(pid=%d) ", param->vpid); 877 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO H264(pid=%d) ", param->vpid);
876 else if(param->vtype == VIDEO_VC1) 878 else if(param->vtype == VIDEO_VC1)
877 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO VC1(pid=%d) ", param->vpid); 879 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO VC1(pid=%d) ", param->vpid);
878 else if(param->vtype == VIDEO_AVC) 880 else if(param->vtype == VIDEO_AVC)
879 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO AVC(NAL-H264, pid=%d) ", param->vpid); 881 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO AVC(NAL-H264, pid=%d) ", param->vpid);
882 else if(param->vtype == VIDEO_HEVC)
883 mp_msg(MSGT_DEMUXER, MSGL_INFO, "VIDEO HEVC(pid=%d) ", param->vpid);
880 } 884 }
881 else 885 else
882 { 886 {
883 param->vtype = UNKNOWN; 887 param->vtype = UNKNOWN;
884 //WE DIDN'T MATCH ANY VIDEO STREAM 888 //WE DIDN'T MATCH ANY VIDEO STREAM
2364 es->type = VIDEO_DIRAC; 2368 es->type = VIDEO_DIRAC;
2365 } 2369 }
2366 else if(d[0] == 'B' && d[1] == 'S' && d[2] == 'S' && d[3] == 'D') 2370 else if(d[0] == 'B' && d[1] == 'S' && d[2] == 'S' && d[3] == 'D')
2367 { 2371 {
2368 es->type = AUDIO_S302M; 2372 es->type = AUDIO_S302M;
2373 }
2374 else if(d[0] == 'H' && d[1] == 'E' && d[2] == 'V' && d[3] == 'C')
2375 {
2376 es->type = VIDEO_HEVC;
2369 } 2377 }
2370 else 2378 else
2371 es->type = UNKNOWN; 2379 es->type = UNKNOWN;
2372 mp_msg(MSGT_DEMUX, MSGL_DBG2, "FORMAT %s\n", es->format_descriptor); 2380 mp_msg(MSGT_DEMUX, MSGL_DBG2, "FORMAT %s\n", es->format_descriptor);
2373 } 2381 }
3326 } 3334 }
3327 else if((sh_video->format == VIDEO_MPEG4) && (i==0x1B6)) 3335 else if((sh_video->format == VIDEO_MPEG4) && (i==0x1B6))
3328 break; 3336 break;
3329 else if(sh_video->format == VIDEO_VC1 && (i==0x10E || i==0x10F)) 3337 else if(sh_video->format == VIDEO_VC1 && (i==0x10E || i==0x10F))
3330 break; 3338 break;
3339 else if(sh_video->format == VIDEO_HEVC)
3340 break;
3331 else //H264 3341 else //H264
3332 { 3342 {
3333 if((i & ~0x60) == 0x105 || (i & ~0x60) == 0x107) break; 3343 if((i & ~0x60) == 0x105 || (i & ~0x60) == 0x107) break;
3334 } 3344 }
3335 3345