mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
cbs_h264: Improve adding SEI messages
Up until now, if an SEI messages was to be added to a fragment, it was tried to add said SEI message to the first SEI NAL unit of the fragment and if this SEI NAL unit already contained H264_NAL_SEI SEI messages (an arbitrary limit imposed by cbs_h264), adding failed; if there was no SEI NAL unit, a new one has been added. With this commit, the fragment is searched for further NAL units to add the SEI messages to. If all of them are full, a new SEI NAL unit is added. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
4e7e30bbe0
commit
ae49993ce6
@ -1588,21 +1588,21 @@ int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamFragment *au,
|
||||
const H264RawSEIPayload *payload)
|
||||
{
|
||||
H264RawSEI *sei;
|
||||
CodedBitstreamUnit *nal = NULL;
|
||||
H264RawSEI *sei = NULL;
|
||||
int err, i;
|
||||
|
||||
// Find an existing SEI NAL unit to add to.
|
||||
for (i = 0; i < au->nb_units; i++) {
|
||||
if (au->units[i].type == H264_NAL_SEI) {
|
||||
nal = &au->units[i];
|
||||
break;
|
||||
sei = au->units[i].content;
|
||||
if (sei->payload_count < H264_MAX_SEI_PAYLOADS)
|
||||
break;
|
||||
|
||||
sei = NULL;
|
||||
}
|
||||
}
|
||||
if (nal) {
|
||||
sei = nal->content;
|
||||
|
||||
} else {
|
||||
if (!sei) {
|
||||
// Need to make a new SEI NAL unit. Insert it before the first
|
||||
// slice data NAL unit; if no slice data, add at the end.
|
||||
AVBufferRef *sei_ref;
|
||||
@ -1634,12 +1634,6 @@ int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
|
||||
return err;
|
||||
}
|
||||
|
||||
if (sei->payload_count >= H264_MAX_SEI_PAYLOADS) {
|
||||
av_log(ctx->log_ctx, AV_LOG_ERROR, "Too many payloads in "
|
||||
"SEI NAL unit.\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
memcpy(&sei->payload[sei->payload_count], payload, sizeof(*payload));
|
||||
++sei->payload_count;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user