31 #define TXD_DXT1 0x31545844 32 #define TXD_DXT3 0x33545844 52 version = bytestream2_get_le32(&gb);
54 d3d_format = bytestream2_get_le32(&gb);
55 w = bytestream2_get_le16(&gb);
56 h = bytestream2_get_le16(&gb);
57 depth = bytestream2_get_byte(&gb);
59 flags = bytestream2_get_byte(&gb);
61 if (version < 8 || version > 9) {
68 }
else if (depth == 16 || depth == 32) {
90 pal = (uint32_t *) p->
data[1];
91 for (y = 0; y < 256; y++) {
92 v = bytestream2_get_be32(&gb);
93 pal[y] = (v >> 8) + (v << 24);
102 }
else if (depth == 16) {
104 switch (d3d_format) {
111 for (j = 0; j < avctx->
height; j += 4) {
112 for (i = 0; i < avctx->
width; i += 4) {
122 for (j = 0; j < avctx->
height; j += 4) {
123 for (i = 0; i < avctx->
width; i += 4) {
133 }
else if (depth == 32) {
134 switch (d3d_format) {
139 for (y=0; y<
h; y++) {
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
This structure describes decoded (raw) audio or video data.
ptrdiff_t const GLvoid * data
int coded_width
Bitstream width / height, may be different from width/height e.g.
int ff_set_dimensions(AVCodecContext *s, int width, int height)
Check that the provided frame dimensions are valid and set them on the codec context.
Texture block (4x4) module.
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
static av_always_inline void bytestream2_init(GetByteContext *g, const uint8_t *buf, int buf_size)
8 bits with AV_PIX_FMT_RGB32 palette
int(* dxt3_block)(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
static av_always_inline int bytestream2_get_bytes_left(GetByteContext *g)
static int txd_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
static av_always_inline void bytestream2_skip(GetByteContext *g, unsigned int size)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static av_always_inline unsigned int bytestream2_get_buffer(GetByteContext *g, uint8_t *dst, unsigned int size)
const char * name
Name of the codec implementation.
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
av_cold void ff_texturedsp_init(TextureDSPContext *c)
enum AVPictureType pict_type
Picture type of the frame.
int width
picture width / height.
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
Libavcodec external API header.
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
main external API structure.
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
int(* dxt1_block)(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
void avpriv_report_missing_feature(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
#define flags(name, subs,...)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
common internal api header.
static int unsupported(AVCodecContext *avctx)
This structure stores compressed data.
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about which is also called distortion Distortion can be quantified by almost any quality measurement one chooses the sum of squared differences is used but more complex methods that consider psychovisual effects can be used as well It makes no difference in this discussion First step
#define AV_CEIL_RSHIFT(a, b)