summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2022-12-04 18:30:34 -0300
committerJames Almer <jamrial@gmail.com>2022-12-07 08:55:38 -0300
commit0afdc398ce314e052ec9c423a032f9934dabaeb9 (patch)
tree0d9a7063b4bb76d1a82fe01368314a99beb7a228 /libavcodec
parentb1fdb0b347c1d7d022a16cf682ba7de03bd491db (diff)
avcodec/decode: don't set last_pkt_props->size
Use the opaque field instead to keep this value. No functional change, but removes the hack that made the packet technically invalid, allowing the safe usage of functions like av_packet_ref() on it if required. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/decode.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index c94d9aa33c..b184c3f55b 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -140,7 +140,7 @@ static int extract_packet_props(AVCodecInternal *avci, const AVPacket *pkt)
if (pkt) {
ret = av_packet_copy_props(avci->last_pkt_props, pkt);
if (!ret)
- avci->last_pkt_props->size = pkt->size; // HACK: Needed for ff_decode_frame_props().
+ avci->last_pkt_props->opaque = (void *)(intptr_t)pkt->size; // Needed for ff_decode_frame_props().
}
return ret;
}
@@ -469,7 +469,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
pkt->pts = AV_NOPTS_VALUE;
pkt->dts = AV_NOPTS_VALUE;
if (!(codec->caps_internal & FF_CODEC_CAP_SETS_FRAME_PROPS)) {
- avci->last_pkt_props->size -= consumed; // See extract_packet_props() comment.
+ // See extract_packet_props() comment.
+ avci->last_pkt_props->opaque = (void *)((intptr_t)avci->last_pkt_props->opaque - consumed);
avci->last_pkt_props->pts = AV_NOPTS_VALUE;
avci->last_pkt_props->dts = AV_NOPTS_VALUE;
}
@@ -1284,7 +1285,7 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
frame->pts = pkt->pts;
frame->pkt_pos = pkt->pos;
frame->duration = pkt->duration;
- frame->pkt_size = pkt->size;
+ frame->pkt_size = (int)(intptr_t)pkt->opaque;
for (int i = 0; i < FF_ARRAY_ELEMS(sd); i++) {
size_t size;