diff options
author | Tom Butterworth <bangnoise@gmail.com> | 2015-07-21 01:12:12 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-22 16:15:53 +0200 |
commit | c7e6443441ed5c1b5f64067dfbf4956bc2c6acbb (patch) | |
tree | da72df57a5d67e30d68f18af10a3aba7e0d412c9 /libavcodec/hap.h | |
parent | 9837d3b06844f6cb24e36bdbcce55c03f8241eb4 (diff) | |
download | ffmpeg-c7e6443441ed5c1b5f64067dfbf4956bc2c6acbb.tar.gz |
Support the Hap chunked frame format
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/hap.h')
-rw-r--r-- | libavcodec/hap.h | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/libavcodec/hap.h b/libavcodec/hap.h index 8840851fd7..893b4c5f92 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 FFmpeg. * @@ -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_size; /* Optimal slice size */ @@ -63,4 +83,15 @@ 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 */ |