30 #define WINDOW_NAME "lavcxwdenc" 31 #define WINDOW_NAME_SIZE 11 34 const AVFrame *pict,
int *got_packet)
38 uint32_t pixdepth, bpp, bpad, ncolors = 0, lsize, vclass,
be = 0;
39 uint32_t
rgb[3] = { 0 }, bitorder = 0;
157 bytestream_put_be32(&buf, header_size);
160 bytestream_put_be32(&buf, pixdepth);
161 bytestream_put_be32(&buf, avctx->
width);
162 bytestream_put_be32(&buf, avctx->
height);
163 bytestream_put_be32(&buf, 0);
164 bytestream_put_be32(&buf, be);
165 bytestream_put_be32(&buf, 32);
166 bytestream_put_be32(&buf, bitorder);
167 bytestream_put_be32(&buf, bpad);
168 bytestream_put_be32(&buf, bpp);
169 bytestream_put_be32(&buf, lsize);
170 bytestream_put_be32(&buf, vclass);
171 bytestream_put_be32(&buf, rgb[0]);
172 bytestream_put_be32(&buf, rgb[1]);
173 bytestream_put_be32(&buf, rgb[2]);
174 bytestream_put_be32(&buf, 8);
175 bytestream_put_be32(&buf, ncolors);
176 bytestream_put_be32(&buf, ncolors);
177 bytestream_put_be32(&buf, avctx->
width);
178 bytestream_put_be32(&buf, avctx->
height);
179 bytestream_put_be32(&buf, 0);
180 bytestream_put_be32(&buf, 0);
181 bytestream_put_be32(&buf, 0);
185 memcpy(pal, p->
data[1],
sizeof(pal));
190 for (i = 0; i < ncolors; i++) {
195 red = (val >> 16) & 0xFF;
196 green = (val >> 8) & 0xFF;
199 bytestream_put_be32(&buf, i);
200 bytestream_put_be16(&buf, red << 8);
201 bytestream_put_be16(&buf, green << 8);
202 bytestream_put_be16(&buf, blue << 8);
203 bytestream_put_byte(&buf, 0x7);
204 bytestream_put_byte(&buf, 0);
208 for (i = 0; i < avctx->
height; i++) {
static enum AVPixelFormat pix_fmt
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
This structure describes decoded (raw) audio or video data.
packed RGB 8:8:8, 24bpp, RGBRGB...
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined ...
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data.
8 bits with AV_PIX_FMT_RGB32 palette
int avpriv_set_systematic_pal2(uint32_t pal[256], enum AVPixelFormat pix_fmt)
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
const char * name
Name of the codec implementation.
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
int flags
A combination of AV_PKT_FLAG values.
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
enum AVPictureType pict_type
Picture type of the frame.
packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
int width
picture width / height.
packed RGB 8:8:8, 24bpp, BGRBGR...
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
Libavcodec external API header.
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
main external API structure.
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it be(in the first position) for now.Options-------Then comes the options array.This is what will define the user accessible options.For example
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined ...
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
common internal api header.
Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb...
packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
#define AV_PIX_FMT_FLAG_BE
Pixel format is big-endian.
static av_always_inline void bytestream_put_buffer(uint8_t **b, const uint8_t *src, unsigned int size)
static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet)
int key_frame
1 -> keyframe, 0-> not
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Frame references ownership and permissions
AVPixelFormat
Pixel format.
static double val(void *priv, double ch)
This structure stores compressed data.