aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorAlexander V. Lukyanov <lavv17f@gmail.com>2014-07-08 11:54:15 +0400
committerMartin Storsjö <martin@martin.st>2014-07-10 11:24:19 +0300
commit5adcef9c1bf701ba2dd43363ae983ba6d74bdb9a (patch)
tree83bbf74577a21e36ab1e69f161e966291dde48b3 /libavformat
parentf46bb608d9d76c543e4929dc8cffe36b84bd789e (diff)
downloadffmpeg-5adcef9c1bf701ba2dd43363ae983ba6d74bdb9a.tar.gz
mpegts: pass MpegTSContext ptr explicitly
AVFormatContext->priv_data is not always a MpegTSContext, it can be RTSPState when decoding a RTP stream. So it is necessary to pass MpegTSContext pointer explicitly. Within libav, the write_section_data function doesn't actually use the MpegTSContext at all, so this doesn't change anything at the moment (no memory was corrupted before), but it reduces the risk of anybody trying to touch the MpegTSContext via AVFormatContext->priv_data in the future. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mpegts.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index c00f4b15fb..5d8b08ce0c 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -287,7 +287,7 @@ static int discard_pid(MpegTSContext *ts, unsigned int pid)
* Assemble PES packets out of TS packets, and then call the "section_cb"
* function when they are complete.
*/
-static void write_section_data(AVFormatContext *s, MpegTSFilter *tss1,
+static void write_section_data(MpegTSContext *ts, MpegTSFilter *tss1,
const uint8_t *buf, int buf_size, int is_start)
{
MpegTSSectionFilter *tss = &tss1->u.section_filter;
@@ -1704,7 +1704,6 @@ static void sdt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
/* handle one TS packet */
static int handle_packet(MpegTSContext *ts, const uint8_t *packet)
{
- AVFormatContext *s = ts->stream;
MpegTSFilter *tss;
int len, pid, cc, expected_cc, cc_ok, afc, is_start, is_discontinuity,
has_adaptation, has_payload;
@@ -1774,7 +1773,7 @@ static int handle_packet(MpegTSContext *ts, const uint8_t *packet)
return 0;
if (len && cc_ok) {
/* write remaining section bytes */
- write_section_data(s, tss,
+ write_section_data(ts, tss,
p, len, 0);
/* check whether filter has been closed */
if (!ts->pids[pid])
@@ -1782,12 +1781,12 @@ static int handle_packet(MpegTSContext *ts, const uint8_t *packet)
}
p += len;
if (p < p_end) {
- write_section_data(s, tss,
+ write_section_data(ts, tss,
p, p_end - p, 1);
}
} else {
if (cc_ok) {
- write_section_data(s, tss,
+ write_section_data(ts, tss,
p, p_end - p, 0);
}
}