Mercurial > libavformat.hg
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); |