[FFmpeg-devel] [PATCH 3/3] avcodec/hap: Support chunked Hap frames
Tom Butterworth
bangnoise at gmail.com
Tue Jul 21 02:09:50 CEST 2015
Thanks Michael, new patch set to replace this patch incoming.
On 17 July 2015 at 20:13, Michael Niedermayer <michael at niedermayer.cc> wrote:
> On Thu, Jul 16, 2015 at 01:23:23PM +0100, Tom Butterworth wrote:
>> ---
>> libavcodec/Makefile | 4 +-
>> libavcodec/hap.c | 51 +++++++++
>> libavcodec/hap.h | 68 ++++++++----
>> libavcodec/hapdec.c | 278 ++++++++++++++++++++++++++++++++++++-----------
>> libavcodec/hapenc.c | 190 ++++++++++++++++++++++++++------
>> tests/fate/video.mak | 3 +
>> tests/ref/fate/hap-chunk | 2 +
>> 7 files changed, 481 insertions(+), 115 deletions(-)
>> create mode 100644 libavcodec/hap.c
>> create mode 100644 tests/ref/fate/hap-chunk
>>
>> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
>> index b7fe1c9..2796035 100644
>> --- a/libavcodec/Makefile
>> +++ b/libavcodec/Makefile
>> @@ -283,8 +283,8 @@ OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o
>> OBJS-$(CONFIG_H264_VDA_DECODER) += vda_h264_dec.o
>> OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h264.o
>> OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o
>> -OBJS-$(CONFIG_HAP_DECODER) += hapdec.o
>> -OBJS-$(CONFIG_HAP_ENCODER) += hapenc.o
>> +OBJS-$(CONFIG_HAP_DECODER) += hapdec.o hap.o
>> +OBJS-$(CONFIG_HAP_ENCODER) += hapenc.o hap.o
>> OBJS-$(CONFIG_HEVC_DECODER) += hevc.o hevc_mvs.o hevc_ps.o hevc_sei.o \
>> hevc_cabac.o hevc_refs.o hevcpred.o \
>> hevcdsp.o hevc_filter.o hevc_parse.o hevc_data.o
>> diff --git a/libavcodec/hap.c b/libavcodec/hap.c
>> new file mode 100644
>> index 0000000..c1685ad
>> --- /dev/null
>> +++ b/libavcodec/hap.c
>> @@ -0,0 +1,51 @@
>> +/*
>> + * Vidvox Hap utility functions
>> + * Copyright (C) 2015 Tom Butterworth <bangnoise at gmail.com>
>> + *
>> + * This file is part of FFmpeg.
>> + *
>> + * FFmpeg is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU Lesser General Public
>> + * License as published by the Free Software Foundation; either
>> + * version 2.1 of the License, or (at your option) any later version.
>> + *
>> + * FFmpeg is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with FFmpeg; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>> + */
>> +
>> +/**
>> + * @file
>> + * Hap utilities
>> + */
>> +#include "hap.h"
>> +
>> +int hap_set_chunk_count(HapContext *ctx, int count, int first_in_frame)
>
> non static functions need ff_ or av_ prefixes
>
>
>> +{
>> + int ret = 0;
>> + if (first_in_frame == 1 && ctx->chunk_count != count) {
>> + int ret = av_reallocp_array(&ctx->chunks, count, sizeof(HapChunk));
>> + if (ret == 0)
>> + ret = av_reallocp_array(&ctx->chunk_results, count, sizeof(int));
>> + if (ret < 0) {
>> + ctx->chunk_count = 0;
>> + } else {
>> + ctx->chunk_count = count;
>> + }
>> + } else if (ctx->chunk_count != count) {
>> + ret = AVERROR_INVALIDDATA;
>> + }
>> + return ret;
>> +}
>> +
>> +void hap_free_context(HapContext *ctx)
>> +{
>> + av_freep(&ctx->tex_buf);
>> + av_freep(&ctx->chunks);
>> + av_freep(&ctx->chunk_results);
>> +}
>> diff --git a/libavcodec/hap.h b/libavcodec/hap.h
>> index bd0fd37..b877c4f 100644
>> --- a/libavcodec/hap.h
>> +++ b/libavcodec/hap.h
>> @@ -1,6 +1,7 @@
>> /*
>> * Vidvox Hap
>> * Copyright (C) 2015 Vittorio Giovara <vittorio.giovara at gmail.com>
>> + * and Tom Butterworth <bangnoise at gmail.com>
>> *
>> * This file is part of FFmpeg.
>> *
>> @@ -29,37 +30,66 @@
>> #include "bytestream.h"
>> #include "texturedsp.h"
>>
>
>> +enum HapTextureFormat {
>> + HAP_FMT_RGBDXT1 = 0x0B,
>> + HAP_FMT_RGBADXT5 = 0x0E,
>> + HAP_FMT_YCOCGDXT5 = 0x0F,
>> +};
>> +
>> +enum HapCompressor {
>> + HAP_COMP_NONE = 0xA0,
>> + HAP_COMP_SNAPPY = 0xB0,
>> + HAP_COMP_COMPLEX = 0xC0,
>> +};
> [...]
>
>> -enum {
>> - HAP_FMT_RGBDXT1 = 0x0B,
>> - HAP_FMT_RGBADXT5 = 0x0E,
>> - HAP_FMT_YCOCGDXT5 = 0x0F,
>> -};
>> -
>> -enum {
>> - HAP_COMP_NONE = 0xA0,
>> - HAP_COMP_SNAPPY = 0xB0,
>> - HAP_COMP_COMPLEX = 0xC0,
>> -};
>
> moving code around and giving enums names should be seperate patches
> from adding features
>
> more generically, cosmetic changes (like movig code) should be
> seperate from functional changes (like adding a feature)
>
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> While the State exists there can be no freedom; when there is freedom there
> will be no State. -- Vladimir Lenin
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list