comparison mpegts.c @ 4976:c236ec233a09 libavformat

export all streams in ts demuxer
author bcoudurier
date Sun, 31 May 2009 00:31:47 +0000
parents 1d10f8b761b7
children 586df9be38ad
comparison
equal deleted inserted replaced
4975:76263311c368 4976:c236ec233a09
620 620
621 dprintf(ts->stream, "stream_type=%x pid=0x%x\n", 621 dprintf(ts->stream, "stream_type=%x pid=0x%x\n",
622 stream_type, pid); 622 stream_type, pid);
623 623
624 /* now create ffmpeg stream */ 624 /* now create ffmpeg stream */
625 switch(stream_type) {
626 case STREAM_TYPE_AUDIO_MPEG1:
627 case STREAM_TYPE_AUDIO_MPEG2:
628 case STREAM_TYPE_VIDEO_MPEG1:
629 case STREAM_TYPE_VIDEO_MPEG2:
630 case STREAM_TYPE_VIDEO_MPEG4:
631 case STREAM_TYPE_VIDEO_H264:
632 case STREAM_TYPE_VIDEO_VC1:
633 case STREAM_TYPE_VIDEO_DIRAC:
634 case STREAM_TYPE_AUDIO_AAC:
635 case STREAM_TYPE_AUDIO_AC3:
636 case STREAM_TYPE_AUDIO_DTS:
637 case STREAM_TYPE_AUDIO_HDMV_DTS:
638 case STREAM_TYPE_SUBTITLE_DVB:
639 if((stream_type == STREAM_TYPE_AUDIO_HDMV_DTS && !has_hdmv_descr)
640 || (stream_type == STREAM_TYPE_VIDEO_DIRAC && !has_dirac_descr))
641 break;
642 if(ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES){ 625 if(ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES){
643 pes= ts->pids[pid]->u.pes_filter.opaque; 626 pes= ts->pids[pid]->u.pes_filter.opaque;
644 st= pes->st; 627 st= pes->st;
645 }else{ 628 }else{
646 if (ts->pids[pid]) mpegts_close_filter(ts, ts->pids[pid]); //wrongly added sdt filter probably 629 if (ts->pids[pid]) mpegts_close_filter(ts, ts->pids[pid]); //wrongly added sdt filter probably
649 st = new_pes_av_stream(pes, 0); 632 st = new_pes_av_stream(pes, 0);
650 } 633 }
651 add_pid_to_pmt(ts, h->id, pid); 634 add_pid_to_pmt(ts, h->id, pid);
652 if(st) 635 if(st)
653 av_program_add_stream_index(ts->stream, h->id, st->index); 636 av_program_add_stream_index(ts->stream, h->id, st->index);
654 break;
655 default:
656 /* we ignore the other streams */
657 break;
658 }
659 637
660 if (st) { 638 if (st) {
661 if (language[0] != 0) { 639 if (language[0] != 0) {
662 av_metadata_set(&st->metadata, "language", language); 640 av_metadata_set(&st->metadata, "language", language);
663 } 641 }
1012 codec_id = CODEC_ID_MP2; 990 codec_id = CODEC_ID_MP2;
1013 } else if (code == 0x1bd) { 991 } else if (code == 0x1bd) {
1014 codec_type = CODEC_TYPE_AUDIO; 992 codec_type = CODEC_TYPE_AUDIO;
1015 codec_id = CODEC_ID_AC3; 993 codec_id = CODEC_ID_AC3;
1016 } else { 994 } else {
1017 codec_type = CODEC_TYPE_VIDEO; 995 codec_type = CODEC_TYPE_DATA;
1018 codec_id = CODEC_ID_PROBE; 996 codec_id = CODEC_ID_PROBE;
1019 } 997 }
1020 break; 998 break;
1021 } 999 }
1022 st = av_new_stream(pes->stream, pes->pid); 1000 st = av_new_stream(pes->stream, pes->pid);