Message ID | 20180316223941.1668-1-jamrial@gmail.com |
---|---|
State | Accepted |
Commit | e4eaaf7bf6930cd0c9a15631dfee0e235f327ba9 |
Headers | show |
On 3/16/2018 7:39 PM, James Almer wrote: > There's no need to allocate a new packet for it. > > Signed-off-by: James Almer <jamrial@gmail.com> > --- > libavcodec/vp9_superframe_split_bsf.c | 21 ++++++++++----------- > 1 file changed, 10 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c > index 0d2523ebf7..7b6fa38554 100644 > --- a/libavcodec/vp9_superframe_split_bsf.c > +++ b/libavcodec/vp9_superframe_split_bsf.c > @@ -30,7 +30,7 @@ > #include "get_bits.h" > > typedef struct VP9SFSplitContext { > - AVPacket *buffer_pkt; > + AVPacket buffer_pkt; > > int nb_frames; > int next_frame; > @@ -43,13 +43,13 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > VP9SFSplitContext *s = ctx->priv_data; > AVPacket *in; > int i, j, ret, marker; > - int is_superframe = !!s->buffer_pkt; > + int is_superframe = !!s->buffer_pkt.data; > > - if (!s->buffer_pkt) { > - ret = ff_bsf_get_packet(ctx, &s->buffer_pkt); > + if (!s->buffer_pkt.data) { > + ret = ff_bsf_get_packet_ref(ctx, &s->buffer_pkt); > if (ret < 0) > return ret; > - in = s->buffer_pkt; > + in = &s->buffer_pkt; > > marker = in->data[in->size - 1]; > if ((marker & 0xe0) == 0xc0) { > @@ -90,7 +90,7 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > GetBitContext gb; > int profile, invisible = 0; > > - ret = av_packet_ref(out, s->buffer_pkt); > + ret = av_packet_ref(out, &s->buffer_pkt); > if (ret < 0) > goto fail; > > @@ -101,7 +101,7 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > s->next_frame++; > > if (s->next_frame >= s->nb_frames) > - av_packet_free(&s->buffer_pkt); > + av_packet_unref(&s->buffer_pkt); > > ret = init_get_bits8(&gb, out->data, out->size); > if (ret < 0) > @@ -121,20 +121,19 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) > out->pts = AV_NOPTS_VALUE; > > } else { > - av_packet_move_ref(out, s->buffer_pkt); > - av_packet_free(&s->buffer_pkt); > + av_packet_move_ref(out, &s->buffer_pkt); > } > > return 0; > fail: > - av_packet_free(&s->buffer_pkt); > + av_packet_unref(&s->buffer_pkt); > return ret; > } > > static void vp9_superframe_split_uninit(AVBSFContext *ctx) > { > VP9SFSplitContext *s = ctx->priv_data; > - av_packet_free(&s->buffer_pkt); > + av_packet_unref(&s->buffer_pkt); > } > > const AVBitStreamFilter ff_vp9_superframe_split_bsf = { Will apply later today.
On 3/19/2018 4:22 PM, James Almer wrote: > On 3/16/2018 7:39 PM, James Almer wrote: >> There's no need to allocate a new packet for it. >> >> Signed-off-by: James Almer <jamrial@gmail.com> >> --- >> libavcodec/vp9_superframe_split_bsf.c | 21 ++++++++++----------- >> 1 file changed, 10 insertions(+), 11 deletions(-) >> >> diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c >> index 0d2523ebf7..7b6fa38554 100644 >> --- a/libavcodec/vp9_superframe_split_bsf.c >> +++ b/libavcodec/vp9_superframe_split_bsf.c >> @@ -30,7 +30,7 @@ >> #include "get_bits.h" >> >> typedef struct VP9SFSplitContext { >> - AVPacket *buffer_pkt; >> + AVPacket buffer_pkt; >> >> int nb_frames; >> int next_frame; >> @@ -43,13 +43,13 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) >> VP9SFSplitContext *s = ctx->priv_data; >> AVPacket *in; >> int i, j, ret, marker; >> - int is_superframe = !!s->buffer_pkt; >> + int is_superframe = !!s->buffer_pkt.data; >> >> - if (!s->buffer_pkt) { >> - ret = ff_bsf_get_packet(ctx, &s->buffer_pkt); >> + if (!s->buffer_pkt.data) { >> + ret = ff_bsf_get_packet_ref(ctx, &s->buffer_pkt); >> if (ret < 0) >> return ret; >> - in = s->buffer_pkt; >> + in = &s->buffer_pkt; >> >> marker = in->data[in->size - 1]; >> if ((marker & 0xe0) == 0xc0) { >> @@ -90,7 +90,7 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) >> GetBitContext gb; >> int profile, invisible = 0; >> >> - ret = av_packet_ref(out, s->buffer_pkt); >> + ret = av_packet_ref(out, &s->buffer_pkt); >> if (ret < 0) >> goto fail; >> >> @@ -101,7 +101,7 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) >> s->next_frame++; >> >> if (s->next_frame >= s->nb_frames) >> - av_packet_free(&s->buffer_pkt); >> + av_packet_unref(&s->buffer_pkt); >> >> ret = init_get_bits8(&gb, out->data, out->size); >> if (ret < 0) >> @@ -121,20 +121,19 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) >> out->pts = AV_NOPTS_VALUE; >> >> } else { >> - av_packet_move_ref(out, s->buffer_pkt); >> - av_packet_free(&s->buffer_pkt); >> + av_packet_move_ref(out, &s->buffer_pkt); >> } >> >> return 0; >> fail: >> - av_packet_free(&s->buffer_pkt); >> + av_packet_unref(&s->buffer_pkt); >> return ret; >> } >> >> static void vp9_superframe_split_uninit(AVBSFContext *ctx) >> { >> VP9SFSplitContext *s = ctx->priv_data; >> - av_packet_free(&s->buffer_pkt); >> + av_packet_unref(&s->buffer_pkt); >> } >> >> const AVBitStreamFilter ff_vp9_superframe_split_bsf = { > > Will apply later today. > Pushed.
diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c index 0d2523ebf7..7b6fa38554 100644 --- a/libavcodec/vp9_superframe_split_bsf.c +++ b/libavcodec/vp9_superframe_split_bsf.c @@ -30,7 +30,7 @@ #include "get_bits.h" typedef struct VP9SFSplitContext { - AVPacket *buffer_pkt; + AVPacket buffer_pkt; int nb_frames; int next_frame; @@ -43,13 +43,13 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) VP9SFSplitContext *s = ctx->priv_data; AVPacket *in; int i, j, ret, marker; - int is_superframe = !!s->buffer_pkt; + int is_superframe = !!s->buffer_pkt.data; - if (!s->buffer_pkt) { - ret = ff_bsf_get_packet(ctx, &s->buffer_pkt); + if (!s->buffer_pkt.data) { + ret = ff_bsf_get_packet_ref(ctx, &s->buffer_pkt); if (ret < 0) return ret; - in = s->buffer_pkt; + in = &s->buffer_pkt; marker = in->data[in->size - 1]; if ((marker & 0xe0) == 0xc0) { @@ -90,7 +90,7 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) GetBitContext gb; int profile, invisible = 0; - ret = av_packet_ref(out, s->buffer_pkt); + ret = av_packet_ref(out, &s->buffer_pkt); if (ret < 0) goto fail; @@ -101,7 +101,7 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) s->next_frame++; if (s->next_frame >= s->nb_frames) - av_packet_free(&s->buffer_pkt); + av_packet_unref(&s->buffer_pkt); ret = init_get_bits8(&gb, out->data, out->size); if (ret < 0) @@ -121,20 +121,19 @@ static int vp9_superframe_split_filter(AVBSFContext *ctx, AVPacket *out) out->pts = AV_NOPTS_VALUE; } else { - av_packet_move_ref(out, s->buffer_pkt); - av_packet_free(&s->buffer_pkt); + av_packet_move_ref(out, &s->buffer_pkt); } return 0; fail: - av_packet_free(&s->buffer_pkt); + av_packet_unref(&s->buffer_pkt); return ret; } static void vp9_superframe_split_uninit(AVBSFContext *ctx) { VP9SFSplitContext *s = ctx->priv_data; - av_packet_free(&s->buffer_pkt); + av_packet_unref(&s->buffer_pkt); } const AVBitStreamFilter ff_vp9_superframe_split_bsf = {
There's no need to allocate a new packet for it. Signed-off-by: James Almer <jamrial@gmail.com> --- libavcodec/vp9_superframe_split_bsf.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)