summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2021-08-05 12:04:14 -0300
committerJames Almer <jamrial@gmail.com>2021-08-14 23:06:38 -0300
commitacd079843b7cdf18a1d6c84a5fe48555f7554e92 (patch)
tree9f8290c3c6803f53342fbc44f8e1919b8a56c9fc
parent46e4562b3a6d561174812f2f521ae6be6afe4fca (diff)
avcodec/trace_headers_bsf: also parse extradata in packet side data
Certain mov/mp4 files have parameter sets out of band, and when required for a sample it may be propagated within the relevant packet's side data. This fixes parsing said files if the SPS and/or PPS in the side data is different than the one in extradata. Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r--libavcodec/trace_headers_bsf.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libavcodec/trace_headers_bsf.c b/libavcodec/trace_headers_bsf.c
index b891730bac..a9b0247412 100644
--- a/libavcodec/trace_headers_bsf.c
+++ b/libavcodec/trace_headers_bsf.c
@@ -95,6 +95,19 @@ static int trace_headers(AVBSFContext *bsf, AVPacket *pkt)
av_log(bsf, AV_LOG_INFO, "Packet: %d bytes%s.\n", pkt->size, tmp);
+ if (av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, NULL)) {
+ av_log(bsf, AV_LOG_INFO, "Side data:\n");
+
+ err = ff_cbs_read_packet_side_data(ctx->cbc, frag, pkt);
+ ff_cbs_fragment_reset(frag);
+
+ if (err < 0) {
+ av_packet_unref(pkt);
+ return err;
+ }
+ av_log(bsf, AV_LOG_INFO, "Payload:\n");
+ }
+
err = ff_cbs_read_packet(ctx->cbc, frag, pkt);
ff_cbs_fragment_reset(frag);