diff options
author | Tom Butterworth <bangnoise@gmail.com> | 2015-07-23 14:39:29 -0400 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-07-27 16:00:22 +0100 |
commit | 3ee217853a6741b829a2683f49c590618891b1ab (patch) | |
tree | 2a3ef630b8bf1bede5cf73a30e64f29b22a5555b /libavcodec/hap.h | |
parent | 43dd004747fa697396b47d034a80e069facbea09 (diff) | |
download | ffmpeg-3ee217853a6741b829a2683f49c590618891b1ab.tar.gz |
Support the Hap chunked frame format
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavcodec/hap.h')
-rw-r--r-- | libavcodec/hap.h | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/libavcodec/hap.h b/libavcodec/hap.h index a0fc2e0bf3..9d847f7b86 100644 --- a/libavcodec/hap.h +++ b/libavcodec/hap.h @@ -1,6 +1,7 @@ /* * Vidvox Hap * Copyright (C) 2015 Vittorio Giovara <vittorio.giovara@gmail.com> + * Copyright (C) 2015 Tom Butterworth <bangnoise@gmail.com> * * This file is part of Libav. * @@ -41,20 +42,39 @@ enum HapCompressor { HAP_COMP_COMPLEX = 0xC0, }; +enum HapSectionType { + HAP_ST_DECODE_INSTRUCTIONS = 0x01, + HAP_ST_COMPRESSOR_TABLE = 0x02, + HAP_ST_SIZE_TABLE = 0x03, + HAP_ST_OFFSET_TABLE = 0x04, +}; + +typedef struct HapChunk { + enum HapCompressor compressor; + int compressed_offset; + size_t compressed_size; + int uncompressed_offset; + size_t uncompressed_size; +} HapChunk; + typedef struct HapContext { AVClass *class; TextureDSPContext dxtc; GetByteContext gbc; - int section_type; /* Header type */ + enum HapTextureFormat opt_tex_fmt; /* Texture type (encoder only) */ + int opt_chunk_count; /* User-requested chunk count (encoder only) */ + + int chunk_count; + HapChunk *chunks; + int *chunk_results; /* Results from threaded operations */ int tex_rat; /* Compression ratio */ const uint8_t *tex_data; /* Compressed texture */ - uint8_t *tex_buf; /* Uncompressed texture */ + uint8_t *tex_buf; /* Buffer for compressed texture */ size_t tex_size; /* Size of the compressed texture */ - uint8_t *snappied; /* Buffer interacting with snappy */ size_t max_snappy; /* Maximum compressed size for snappy buffer */ int slice_count; /* Number of slices for threaded operations */ @@ -63,4 +83,16 @@ typedef struct HapContext { int (*tex_fun)(uint8_t *dst, ptrdiff_t stride, const uint8_t *block); } HapContext; +/* + * Set the number of chunks in the frame. Returns 0 on success or an error if: + * - first_in_frame is 0 and the number of chunks has changed + * - any other error occurs + */ +int ff_hap_set_chunk_count(HapContext *ctx, int count, int first_in_frame); + +/* + * Free resources associated with the context + */ +av_cold void ff_hap_free_context(HapContext *ctx); + #endif /* AVCODEC_HAP_H */ |