1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00

avcodec/hapqa_extract: move the reference in the bsf internal buffer

There's no need to allocate a new packet for it.

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2018-03-13 18:55:49 -03:00
parent 3172b31223
commit 2b6699f024

View File

@ -45,7 +45,7 @@ static int check_texture(HapqaExtractContext *ctx, int section_type) {
} }
} }
static int hapqa_extract(AVBSFContext *bsf, AVPacket *out) static int hapqa_extract(AVBSFContext *bsf, AVPacket *pkt)
{ {
HapqaExtractContext *ctx = bsf->priv_data; HapqaExtractContext *ctx = bsf->priv_data;
GetByteContext gbc; GetByteContext gbc;
@ -53,14 +53,13 @@ static int hapqa_extract(AVBSFContext *bsf, AVPacket *out)
enum HapSectionType section_type; enum HapSectionType section_type;
int start_section_size; int start_section_size;
int target_packet_size = 0; int target_packet_size = 0;
AVPacket *in;
int ret = 0; int ret = 0;
ret = ff_bsf_get_packet(bsf, &in); ret = ff_bsf_get_packet_ref(bsf, pkt);
if (ret < 0) if (ret < 0)
return ret; return ret;
bytestream2_init(&gbc, in->data, in->size); bytestream2_init(&gbc, pkt->data, pkt->size);
ret = ff_hap_parse_section_header(&gbc, &section_size, &section_type); ret = ff_hap_parse_section_header(&gbc, &section_size, &section_type);
if (ret != 0) if (ret != 0)
goto fail; goto fail;
@ -95,14 +94,12 @@ static int hapqa_extract(AVBSFContext *bsf, AVPacket *out)
} }
} }
av_packet_move_ref(out, in); pkt->data += start_section_size;
out->data += start_section_size; pkt->size = target_packet_size;
out->size = target_packet_size;
fail: fail:
if (ret < 0) if (ret < 0)
av_packet_unref(out); av_packet_unref(pkt);
av_packet_free(&in);
return ret; return ret;
} }