mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-07 23:32:33 +00:00
avcodec/texturedsp: Add separate TextureDSPEncContext
ff_texturedspenc_init() doesn't support most of the function types supported for decoding; add a separate context containing only pointers for the actually supported types. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
8f791304f2
commit
a3fc9fb9fb
@ -266,7 +266,7 @@ static int dxv_encode(AVCodecContext *avctx, AVPacket *pkt,
|
||||
static av_cold int dxv_init(AVCodecContext *avctx)
|
||||
{
|
||||
DXVEncContext *ctx = avctx->priv_data;
|
||||
TextureDSPContext texdsp;
|
||||
TextureDSPEncContext texdsp;
|
||||
int ret = av_image_check_size(avctx->width, avctx->height, 0, avctx);
|
||||
|
||||
if (ret < 0) {
|
||||
|
@ -232,7 +232,7 @@ static int hap_encode(AVCodecContext *avctx, AVPacket *pkt,
|
||||
static av_cold int hap_init(AVCodecContext *avctx)
|
||||
{
|
||||
HapContext *ctx = avctx->priv_data;
|
||||
TextureDSPContext dxtc;
|
||||
TextureDSPEncContext dxtc;
|
||||
int corrected_chunk_count;
|
||||
int ret = av_image_check_size(avctx->width, avctx->height, 0, avctx);
|
||||
|
||||
|
@ -62,6 +62,12 @@ typedef struct TextureDSPContext {
|
||||
int (*dxn3dc_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block);
|
||||
} TextureDSPContext;
|
||||
|
||||
typedef struct TextureDSPEncContext {
|
||||
int (*dxt1_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block);
|
||||
int (*dxt5_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block);
|
||||
int (*dxt5ys_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block);
|
||||
} TextureDSPEncContext;
|
||||
|
||||
typedef struct TextureDSPThreadContext {
|
||||
union {
|
||||
const uint8_t *in; // Input frame data
|
||||
@ -81,7 +87,7 @@ typedef struct TextureDSPThreadContext {
|
||||
} TextureDSPThreadContext;
|
||||
|
||||
void ff_texturedsp_init(TextureDSPContext *c);
|
||||
void ff_texturedspenc_init(TextureDSPContext *c);
|
||||
void ff_texturedspenc_init(TextureDSPEncContext *c);
|
||||
|
||||
int ff_texturedsp_decompress_thread(AVCodecContext *avctx, void *arg, int slice, int thread_nb);
|
||||
int ff_texturedsp_compress_thread(AVCodecContext *avctx, void *arg, int slice, int thread_nb);
|
||||
|
@ -647,7 +647,7 @@ static int dxt5ys_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
|
||||
return 16;
|
||||
}
|
||||
|
||||
av_cold void ff_texturedspenc_init(TextureDSPContext *c)
|
||||
av_cold void ff_texturedspenc_init(TextureDSPEncContext *c)
|
||||
{
|
||||
c->dxt1_block = dxt1_block;
|
||||
c->dxt5_block = dxt5_block;
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
typedef struct VBNContext {
|
||||
AVClass *class;
|
||||
TextureDSPContext dxtc;
|
||||
TextureDSPEncContext dxtc;
|
||||
int format;
|
||||
TextureDSPThreadContext enc;
|
||||
} VBNContext;
|
||||
|
Loading…
Reference in New Issue
Block a user