[FFmpeg-cvslog] Export more transport stream information.
Kieran Kunhya
git at videolan.org
Sat May 28 04:25:19 CEST 2011
ffmpeg | branch: master | Kieran Kunhya <kieran at kunhya.com> | Fri Mar 4 19:22:09 2011 +0000| [24adef142f4901abf7e92e79d20b79f332d5c54f] | committer: Michael Niedermayer
Export more transport stream information.
with minor addition to the comment by michael
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=24adef142f4901abf7e92e79d20b79f332d5c54f
---
libavformat/avformat.h | 9 +++++++++
libavformat/mpegts.c | 7 ++++++-
2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 6381526..783039b 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -647,6 +647,9 @@ typedef struct AVProgram {
unsigned int *stream_index;
unsigned int nb_stream_indexes;
AVMetadata *metadata;
+
+ int program_num;
+ int pmt_pid;
} AVProgram;
#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present
@@ -844,6 +847,12 @@ typedef struct AVFormatContext {
* decoding: number of frames used to probe fps
*/
int fps_probe_size;
+
+ /**
+ * Transport stream id.
+ * This will be moved into demuxer private options. Thus no API/ABI compatibility
+ */
+ int ts_id;
} AVFormatContext;
typedef struct AVPacketList {
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 9511ede..b5f25aa 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1137,6 +1137,7 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
SectionHeader h1, *h = &h1;
const uint8_t *p, *p_end;
int sid, pmt_pid;
+ AVProgram *program;
#ifdef DEBUG
av_dlog(ts->stream, "PAT:\n");
@@ -1149,6 +1150,8 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
if (h->tid != PAT_TID)
return;
+ ts->stream->ts_id = h->id;
+
clear_programs(ts);
for(;;) {
sid = get16(&p, p_end);
@@ -1163,7 +1166,9 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
if (sid == 0x0000) {
/* NIT info */
} else {
- av_new_program(ts->stream, sid);
+ program = av_new_program(ts->stream, sid);
+ program->program_num = sid;
+ program->pmt_pid = pmt_pid;
if (ts->pids[pmt_pid])
mpegts_close_filter(ts, ts->pids[pmt_pid]);
mpegts_open_section_filter(ts, pmt_pid, pmt_cb, ts, 1);
More information about the ffmpeg-cvslog
mailing list