mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
avcodec/h2645_sei: Factor out freeing common SEI parts
This commit only factors out freeing the common SEI parts, not whether the fields indicating whether an SEI is present shall be reset. H.264 and HEVC differ in this regard (ff_h264_sei_uninit() really resets, whereas ff_hevc_reset_sei() only uninits.) and neither actually honours the persistency as prescribed by the relevant specs. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
de5891d371
commit
f89825e60a
@ -418,3 +418,15 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ff_h2645_sei_reset(H2645SEI *s)
|
||||
{
|
||||
av_buffer_unref(&s->a53_caption.buf_ref);
|
||||
|
||||
for (unsigned i = 0; i < s->unregistered.nb_buf_ref; i++)
|
||||
av_buffer_unref(&s->unregistered.buf_ref[i]);
|
||||
s->unregistered.nb_buf_ref = 0;
|
||||
av_freep(&s->unregistered.buf_ref);
|
||||
av_buffer_unref(&s->dynamic_hdr_plus.info);
|
||||
av_buffer_unref(&s->dynamic_hdr_vivid.info);
|
||||
}
|
||||
|
@ -132,4 +132,6 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type,
|
||||
|
||||
int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src);
|
||||
|
||||
void ff_h2645_sei_reset(H2645SEI *s);
|
||||
|
||||
#endif /* AVCODEC_H2645_SEI_H */
|
||||
|
@ -59,11 +59,7 @@ void ff_h264_sei_uninit(H264SEIContext *h)
|
||||
h->common.display_orientation.present = 0;
|
||||
h->common.afd.present = 0;
|
||||
|
||||
av_buffer_unref(&h->common.a53_caption.buf_ref);
|
||||
for (int i = 0; i < h->common.unregistered.nb_buf_ref; i++)
|
||||
av_buffer_unref(&h->common.unregistered.buf_ref[i]);
|
||||
h->common.unregistered.nb_buf_ref = 0;
|
||||
av_freep(&h->common.unregistered.buf_ref);
|
||||
ff_h2645_sei_reset(&h->common);
|
||||
}
|
||||
|
||||
int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps,
|
||||
|
@ -292,15 +292,3 @@ int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s,
|
||||
} while (bytestream2_get_bytes_left(&gbyte) > 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void ff_hevc_reset_sei(HEVCSEI *s)
|
||||
{
|
||||
av_buffer_unref(&s->common.a53_caption.buf_ref);
|
||||
|
||||
for (int i = 0; i < s->common.unregistered.nb_buf_ref; i++)
|
||||
av_buffer_unref(&s->common.unregistered.buf_ref[i]);
|
||||
s->common.unregistered.nb_buf_ref = 0;
|
||||
av_freep(&s->common.unregistered.buf_ref);
|
||||
av_buffer_unref(&s->common.dynamic_hdr_plus.info);
|
||||
av_buffer_unref(&s->common.dynamic_hdr_vivid.info);
|
||||
}
|
||||
|
@ -117,8 +117,11 @@ static inline int ff_hevc_sei_ctx_replace(HEVCSEI *dst, const HEVCSEI *src)
|
||||
* e.g. Caption data that was extracted during NAL
|
||||
* parsing.
|
||||
*
|
||||
* @param s HEVCContext.
|
||||
* @param sei HEVCSEI.
|
||||
*/
|
||||
void ff_hevc_reset_sei(HEVCSEI *s);
|
||||
static inline void ff_hevc_reset_sei(HEVCSEI *sei)
|
||||
{
|
||||
ff_h2645_sei_reset(&sei->common);
|
||||
}
|
||||
|
||||
#endif /* AVCODEC_HEVC_SEI_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user