93 #define FULLPEL_MODE 1
94 #define HALFPEL_MODE 2
95 #define THIRDPEL_MODE 3
96 #define PREDICT_MODE 4
108 0 + 0 * 4, 1 + 0 * 4, 2 + 0 * 4, 2 + 1 * 4,
109 2 + 2 * 4, 3 + 0 * 4, 3 + 1 * 4, 3 + 2 * 4,
110 0 + 1 * 4, 0 + 2 * 4, 1 + 1 * 4, 1 + 2 * 4,
111 0 + 3 * 4, 1 + 3 * 4, 2 + 3 * 4, 3 + 3 * 4,
115 0 * 16 + 0 * 64, 1 * 16 + 0 * 64, 2 * 16 + 0 * 64, 0 * 16 + 2 * 64,
116 3 * 16 + 0 * 64, 0 * 16 + 1 * 64, 1 * 16 + 1 * 64, 2 * 16 + 1 * 64,
117 1 * 16 + 2 * 64, 2 * 16 + 2 * 64, 3 * 16 + 2 * 64, 0 * 16 + 3 * 64,
118 3 * 16 + 1 * 64, 1 * 16 + 3 * 64, 2 * 16 + 3 * 64, 3 * 16 + 3 * 64,
124 { 0, 2 }, { 1, 1 }, { 2, 0 },
125 { 3, 0 }, { 2, 1 }, { 1, 2 }, { 0, 3 },
126 { 0, 4 }, { 1, 3 }, { 2, 2 }, { 3, 1 }, { 4, 0 },
127 { 4, 1 }, { 3, 2 }, { 2, 3 }, { 1, 4 },
128 { 2, 4 }, { 3, 3 }, { 4, 2 },
134 { { 2, -1, -1, -1, -1 }, { 2, 1, -1, -1, -1 }, { 1, 2, -1, -1, -1 },
135 { 2, 1, -1, -1, -1 }, { 1, 2, -1, -1, -1 }, { 1, 2, -1, -1, -1 } },
136 { { 0, 2, -1, -1, -1 }, { 0, 2, 1, 4, 3 }, { 0, 1, 2, 4, 3 },
137 { 0, 2, 1, 4, 3 }, { 2, 0, 1, 3, 4 }, { 0, 4, 2, 1, 3 } },
138 { { 2, 0, -1, -1, -1 }, { 2, 1, 0, 4, 3 }, { 1, 2, 4, 0, 3 },
139 { 2, 1, 0, 4, 3 }, { 2, 1, 4, 3, 0 }, { 1, 2, 4, 0, 3 } },
140 { { 2, 0, -1, -1, -1 }, { 2, 0, 1, 4, 3 }, { 1, 2, 0, 4, 3 },
141 { 2, 1, 0, 4, 3 }, { 2, 1, 3, 4, 0 }, { 2, 4, 1, 0, 3 } },
142 { { 0, 2, -1, -1, -1 }, { 0, 2, 1, 3, 4 }, { 1, 2, 3, 0, 4 },
143 { 2, 0, 1, 3, 4 }, { 2, 1, 3, 0, 4 }, { 2, 0, 4, 3, 1 } },
144 { { 0, 2, -1, -1, -1 }, { 0, 2, 4, 1, 3 }, { 1, 4, 2, 0, 3 },
145 { 4, 2, 0, 1, 3 }, { 2, 0, 1, 4, 3 }, { 4, 2, 1, 0, 3 } },
148 static const struct {
152 { { 0, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 }, { 0, 2 }, { 3, 1 }, { 4, 1 }, { 5, 1 },
153 { 0, 3 }, { 1, 2 }, { 2, 2 }, { 6, 1 }, { 7, 1 }, { 8, 1 }, { 9, 1 }, { 0, 4 } },
154 { { 0, 0 }, { 0, 1 }, { 1, 1 }, { 0, 2 }, { 2, 1 }, { 0, 3 }, { 0, 4 }, { 0, 5 },
155 { 3, 1 }, { 4, 1 }, { 1, 2 }, { 1, 3 }, { 0, 6 }, { 0, 7 }, { 0, 8 }, { 0, 9 } }
159 3881, 4351, 4890, 5481, 6154, 6914, 7761, 8718,
160 9781, 10987, 12339, 13828, 15523, 17435, 19561, 21873,
161 24552, 27656, 30847, 34870, 38807, 43747, 49103, 54683,
162 61694, 68745, 77615, 89113, 100253, 109366, 126635, 141533
175 for (i = 0; i < 4; i++) {
176 const int z0 = 13 * (input[4 * i + 0] + input[4 * i + 2]);
177 const int z1 = 13 * (input[4 * i + 0] - input[4 * i + 2]);
178 const int z2 = 7 * input[4 * i + 1] - 17 * input[4 * i + 3];
179 const int z3 = 17 * input[4 * i + 1] + 7 * input[4 * i + 3];
181 temp[4 * i + 0] = z0 + z3;
182 temp[4 * i + 1] = z1 + z2;
183 temp[4 * i + 2] = z1 - z2;
184 temp[4 * i + 3] = z0 - z3;
187 for (i = 0; i < 4; i++) {
188 const int offset = x_offset[i];
189 const int z0 = 13 * (temp[4 * 0 + i] + temp[4 * 2 + i]);
190 const int z1 = 13 * (temp[4 * 0 + i] - temp[4 * 2 + i]);
191 const int z2 = 7 * temp[4 * 1 + i] - 17 * temp[4 * 3 + i];
192 const int z3 = 17 * temp[4 * 1 + i] + 7 * temp[4 * 3 + i];
194 output[
stride * 0 +
offset] = (z0 + z3) * qmul + 0x80000 >> 20;
195 output[
stride * 2 +
offset] = (z1 + z2) * qmul + 0x80000 >> 20;
196 output[
stride * 8 +
offset] = (z1 - z2) * qmul + 0x80000 >> 20;
197 output[
stride * 10 +
offset] = (z0 - z3) * qmul + 0x80000 >> 20;
209 dc = 13 * 13 * (dc == 1 ? 1538 * block[0]
210 : qmul * (block[0] >> 3) / 2);
214 for (i = 0; i < 4; i++) {
215 const int z0 = 13 * (block[0 + 4 * i] + block[2 + 4 * i]);
216 const int z1 = 13 * (block[0 + 4 * i] - block[2 + 4 * i]);
217 const int z2 = 7 * block[1 + 4 * i] - 17 * block[3 + 4 * i];
218 const int z3 = 17 * block[1 + 4 * i] + 7 * block[3 + 4 * i];
220 block[0 + 4 * i] = z0 + z3;
221 block[1 + 4 * i] = z1 + z2;
222 block[2 + 4 * i] = z1 - z2;
223 block[3 + 4 * i] = z0 - z3;
226 for (i = 0; i < 4; i++) {
227 const int z0 = 13 * (block[i + 4 * 0] + block[i + 4 * 2]);
228 const int z1 = 13 * (block[i + 4 * 0] - block[i + 4 * 2]);
229 const int z2 = 7 * block[i + 4 * 1] - 17 * block[i + 4 * 3];
230 const int z3 = 17 * block[i + 4 * 1] + 7 * block[i + 4 * 3];
231 const int rr = (dc + 0x80000);
233 dst[i + stride * 0] = av_clip_uint8(dst[i + stride * 0] + ((z0 + z3) * qmul + rr >> 20));
234 dst[i + stride * 1] = av_clip_uint8(dst[i + stride * 1] + ((z1 + z2) * qmul + rr >> 20));
235 dst[i + stride * 2] = av_clip_uint8(dst[i + stride * 2] + ((z1 - z2) * qmul + rr >> 20));
236 dst[i + stride * 3] = av_clip_uint8(dst[i + stride * 3] + ((z0 - z3) * qmul + rr >> 20));
239 memset(block, 0, 16 *
sizeof(int16_t));
245 static const uint8_t *
const scan_patterns[4] =
250 const int intra = 3 * type >> 2;
253 for (limit = (16 >> intra); index < 16; index = limit, limit += 8) {
258 sign = (vlc & 1) ? 0 : -1;
265 }
else if (vlc < 4) {
270 level = (vlc + 9 >> 2) - run;
278 level = (vlc >> 3) + ((run == 0) ? 8 : ((run < 2) ? 2 : ((run < 5) ? 0 : -1)));
281 level = (vlc >> 4) + ((run == 0) ? 4 : ((run < 3) ? 2 : ((run < 10) ? 1 : 0)));
286 if ((index += run) >= limit)
289 block[scan[
index]] = (level ^ sign) - sign;
302 int mx,
int my,
int dxy,
303 int thirdpel,
int dir,
int avg)
310 int blocksize = 2 - (width >> 3);
315 if (mx < 0 || mx >= s->
h_edge_pos - width - 1 ||
318 mx = av_clip(mx, -16, s->
h_edge_pos - width + 15);
319 my = av_clip(my, -16, s->
v_edge_pos - height + 15);
329 width + 1, height + 1,
343 mx = mx + (mx < (int) x) >> 1;
344 my = my + (my < (int) y) >> 1;
346 height = height >> 1;
349 for (i = 1; i < 3; i++) {
356 width + 1, height + 1,
378 int i, j, k, mx, my, dx, dy, x, y;
381 const int part_width = ((size & 5) == 4) ? 4 : 16 >> (size & 1);
382 const int part_height = 16 >> ((unsigned)(size + 1) / 3);
383 const int extra_width = (mode ==
PREDICT_MODE) ? -16 * 6 : 0;
384 const int h_edge_pos = 6 * (s->
h_edge_pos - part_width) - extra_width;
385 const int v_edge_pos = 6 * (s->
v_edge_pos - part_height) - extra_width;
387 for (i = 0; i < 16; i += part_height)
388 for (j = 0; j < 16; j += part_width) {
389 const int b_xy = (4 * sl->
mb_x + (j >> 2)) +
392 x = 16 * sl->
mb_x + j;
393 y = 16 * sl->
mb_y + i;
394 k = (j >> 2 & 1) + (i >> 1 & 2) +
395 (j >> 1 & 4) + (i & 8);
398 pred_motion(h, sl, k, part_width >> 2, dir, 1, &mx, &my);
417 mx = av_clip(mx, extra_width - 6 * x, h_edge_pos - 6 * x);
418 my = av_clip(my, extra_width - 6 * y, v_edge_pos - 6 * y);
436 mx = (mx + 1 >> 1) + dx;
437 my = (my + 1 >> 1) + dy;
438 fx = (unsigned)(mx + 0x3000) / 3 - 0x1000;
439 fy = (unsigned)(my + 0x3000) / 3 - 0x1000;
440 dxy = (mx - 3 * fx) + 4 * (my - 3 * fy);
443 fx, fy, dxy, 1, dir, avg);
447 mx = (unsigned)(mx + 1 + 0x3000) / 3 + dx - 0x1000;
448 my = (unsigned)(my + 1 + 0x3000) / 3 + dy - 0x1000;
449 dxy = (mx & 1) + 2 * (my & 1);
452 mx >> 1, my >> 1, dxy, 0, dir, avg);
456 mx = (unsigned)(mx + 3 + 0x6000) / 6 + dx - 0x1000;
457 my = (unsigned)(my + 3 + 0x6000) / 6 + dy - 0x1000;
460 mx, my, 0, 0, dir, avg);
469 if (part_height == 8 && i < 8) {
472 if (part_width == 8 && j < 8)
475 if (part_width == 8 && j < 8)
477 if (part_width == 4 || part_height == 4)
483 part_width >> 2, part_height >> 2, h->
b_stride,
494 int i, j, k,
m, dir,
mode;
498 const int mb_xy = sl->
mb_xy;
525 }
else if (mb_type < 8) {
543 for (m = 0; m < 2; m++) {
545 for (i = 0; i < 4; i++)
549 for (i = 0; i < 4; i++)
555 4 * 2 *
sizeof(int16_t));
591 for (i = 0; i < 4; i++)
593 0, 4 * 2 *
sizeof(int16_t));
599 for (i = 0; i < 4; i++)
601 0, 4 * 2 *
sizeof(int16_t));
606 }
else if (mb_type == 8 || mb_type == 33) {
611 for (i = 0; i < 4; i++)
627 for (i = 0; i < 16; i += 2) {
632 "luma prediction:%"PRIu32
"\n", vlc);
640 left[2] =
svq3_pred_1[top[1] + 1][left[1] + 1][svq3_pred_0[vlc][1]];
642 if (left[1] == -1 || left[2] == -1) {
648 for (i = 0; i < 4; i++)
660 for (i = 0; i < 4; i++)
670 dir = (dir >> 1) ^ 3 * (dir & 1) ^ 1;
682 for (i = 0; i < 4; i++)
684 0, 4 * 2 *
sizeof(int16_t));
686 for (i = 0; i < 4; i++)
688 0, 4 * 2 *
sizeof(int16_t));
722 "error while decoding intra luma dc\n");
731 for (i = 0; i < 4; i++)
732 if ((cbp & (1 << i))) {
733 for (j = 0; j < 4; j++) {
734 k = index ? (1 * (j & 1) + 2 * (i & 1) +
735 2 * (j & 2) + 4 * (i & 2))
741 "error while decoding block\n");
748 for (i = 1; i < 3; ++i)
751 "error while decoding chroma dc block\n");
756 for (i = 1; i < 3; i++) {
757 for (j = 0; j < 4; j++) {
763 "error while decoding chroma ac block\n");
786 const int mb_xy = sl->
mb_xy;
792 if (((header & 0x9F) != 1 && (header & 0x9F) != 2) || (header & 0x60) == 0) {
797 int length = header >> 5 & 3;
830 if ((header & 0x9F) == 2) {
858 -1, 4 *
sizeof(int8_t));
860 -1, 8 *
sizeof(int8_t) * sl->
mb_x);
879 unsigned char *extradata;
880 unsigned char *extradata_end;
882 int marker_found = 0;
939 extradata = (
unsigned char *)avctx->
extradata;
943 if (!memcmp(extradata,
"SEQH", 4)) {
955 int unk0, unk1, unk2, unk3, unk4;
958 if (size > extradata_end - extradata - 8) {
966 switch (frame_size_code) {
1016 unk0, unk1, unk2, unk3, unk4);
1033 unsigned long buf_len = watermark_width *
1034 watermark_height * 4;
1038 if (watermark_height <= 0 ||
1039 (uint64_t)watermark_width * 4 > UINT_MAX / watermark_height) {
1050 watermark_width, watermark_height);
1052 "u1: %x u2: %x u3: %x compressed data size: %d offset: %d\n",
1053 u1, u2, u3, u4, offset);
1054 if (uncompress(buf, &buf_len, extradata + 8 + offset,
1055 size - offset) != Z_OK) {
1057 "could not uncompress watermark logo\n");
1069 "this svq3 file contains watermark which need zlib support compiled in\n");
1100 for (i = 0; i < 2; i++) {
1116 const int b4_stride = h->
mb_width * 4 + 1;
1117 const int b4_array_size = b4_stride * h->
mb_height * 4;
1128 for (i = 0; i < 2; i++) {
1168 int buf_size = avpkt->
size;
1174 if (buf_size == 0) {
1191 memcpy(s->
buf, avpkt->
data, buf_size);
1220 for (i = 0; i < 16; i++) {
1224 for (i = 0; i < 16; i++) {
1261 "%c hpel:%d, tpel:%d aqp:%d qp:%d, slice_num:%02X\n",
1297 for (m = 0; m < 2; m++) {
1299 for (i = 0; i < 4; i++) {
1301 for (j = -1; j < 4; j++)
1333 "error while decoding MB %d %d\n", sl->
mb_x, sl->
mb_y);
1337 if (mb_type != 0 || sl->
cbp)
#define MB_TYPE_INTRA16x16
av_cold void ff_videodsp_init(VideoDSPContext *ctx, int bpc)
int ff_h264_check_intra_pred_mode(const H264Context *h, H264SliceContext *sl, int mode, int is_chroma)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
discard all frames except keyframes
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it...
int16_t mv_cache[2][5 *8][2]
Motion vector cache.
ptrdiff_t const GLvoid * data
op_pixels_func avg_pixels_tab[4][4]
Halfpel motion compensation with rounding (a+b+1)>>1.
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
uint16_t ff_svq1_packet_checksum(const uint8_t *data, const int length, int value)
static int svq3_decode_block(GetBitContext *gb, int16_t *block, int index, const int type)
static void skip_bits_long(GetBitContext *s, int n)
static av_cold int init(AVCodecContext *avctx)
av_cold int ff_h264_decode_init(AVCodecContext *avctx)
enum AVColorRange color_range
MPEG vs JPEG YUV range.
AVBufferRef * mb_type_buf
static unsigned svq3_get_ue_golomb(GetBitContext *gb)
int16_t(*[2] motion_val)[2]
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
av_cold void ff_h264_pred_init(H264PredContext *h, int codec_id, const int bit_depth, int chroma_format_idc)
Set the intra prediction function pointers.
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size)
Same behaviour av_fast_malloc but the buffer has additional AV_INPUT_BUFFER_PADDING_SIZE at the end w...
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
void ff_draw_horiz_band(AVCodecContext *avctx, AVFrame *cur, AVFrame *last, int y, int h, int picture_structure, int first_field, int low_delay)
Draw a horizontal band if supported.
Macro definitions for various function/variable attributes.
static int svq3_mc_dir(SVQ3Context *s, int size, int mode, int dir, int avg)
enum AVDiscard skip_frame
Skip decoding for selected frames.
static const uint8_t golomb_to_pict_type[5]
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
#define av_assert0(cond)
assert() equivalent, that is always enabled.
void(* emulated_edge_mc)(uint8_t *dst, const uint8_t *src, ptrdiff_t dst_linesize, ptrdiff_t src_linesize, int block_w, int block_h, int src_x, int src_y, int w, int h)
Copy a rectangular area of samples to a temporary buffer and replicate the border samples...
uint8_t scaling_matrix4[6][16]
static const uint8_t luma_dc_zigzag_scan[16]
int prev_frame_num_offset
for POC type 2
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
int bit_depth_chroma
bit_depth_chroma_minus8 + 8
#define FF_DEBUG_PICT_INFO
int av_frame_ref(AVFrame *dst, const AVFrame *src)
Set up a new reference to the data described by the source frame.
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
static const IMbInfo i_mb_type_info[26]
static int get_bits_count(const GetBitContext *s)
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
static void fill_rectangle(SDL_Surface *screen, int x, int y, int w, int h, int color, int update)
static const uint8_t header[24]
#define AV_CODEC_FLAG_GRAY
Only decode/encode grayscale.
static int svq3_decode_mb(SVQ3Context *s, unsigned int mb_type)
H.264 / AVC / MPEG4 part10 codec.
unsigned int topright_samples_available
void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl)
static void free_picture(AVCodecContext *avctx, H264Picture *pic)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int has_b_frames
Size of the frame reordering buffer in the decoder.
static av_always_inline void write_back_intra_pred_mode(const H264Context *h, H264SliceContext *sl)
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
av_cold void ff_tpeldsp_init(TpelDSPContext *c)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
int8_t intra4x4_pred_mode_cache[5 *8]
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
int flags
AV_CODEC_FLAG_*.
const char * name
Name of the codec implementation.
unsigned int top_samples_available
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
static const uint8_t offset[127][2]
Sorenson Vector Quantizer #1 (SVQ1) video codec.
static const uint8_t scan8[16 *3+3]
av_cold void ff_hpeldsp_init(HpelDSPContext *c, int flags)
static int svq3_get_se_golomb(GetBitContext *gb)
int16_t mb_luma_dc[3][16 *2]
as mb is addressed by scantable[i] and scantable is uint8_t we can either check that i is not too lar...
uint8_t scaling_matrix8[6][64]
void ff_svq3_add_idct_c(uint8_t *dst, int16_t *block, int stride, int qp, int dc)
useful rectangle filling function
tpel_mc_func avg_tpel_pixels_tab[11]
#define AV_CODEC_CAP_DRAW_HORIZ_BAND
Decoder can use draw_horiz_band callback.
AVBufferRef * motion_val_buf[2]
enum AVPictureType pict_type
Picture type of the frame.
int frame_num_offset
for POC type 2
av_cold void ff_h264dsp_init(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
int width
picture width / height.
void ff_svq3_luma_dc_dequant_idct_c(int16_t *output, int16_t *input, int qp)
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits.
static av_cold int svq3_decode_init(AVCodecContext *avctx)
tpel_mc_func put_tpel_pixels_tab[11]
Thirdpel motion compensation with rounding (a + b + 1) >> 1.
H264SliceContext * slice_ctx
static const uint8_t golomb_to_intra4x4_cbp[48]
#define PART_NOT_AVAILABLE
the normal 2^n-1 "JPEG" YUV ranges
uint8_t * edge_emu_buffer
static const int8_t mv[256][2]
int chroma_format_idc
chroma format from sps to detect changes
#define AV_LOG_INFO
Standard information.
Libavcodec external API header.
H264 / AVC / MPEG4 part10 codec data table
static const uint8_t zigzag_scan[16+1]
int prev_frame_num
frame_num of the last pic for POC type 1/2
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
main external API structure.
uint8_t * data
The data buffer.
int ff_h264_alloc_tables(H264Context *h)
Allocate tables.
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
int ff_h264_check_intra4x4_pred_mode(const H264Context *h, H264SliceContext *sl)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
op_pixels_func put_pixels_tab[4][4]
Halfpel motion compensation with rounding (a+b+1)>>1.
AVBufferRef * av_buffer_allocz(int size)
Same as av_buffer_alloc(), except the returned buffer will be initialized to zero.
static unsigned int get_bits1(GetBitContext *s)
BYTE int const BYTE int int int height
static void skip_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
uint8_t non_zero_count_cache[15 *8]
non zero coeff count cache.
static const uint8_t chroma_dc_scan[4]
static void svq3_mc_dir_part(SVQ3Context *s, int x, int y, int width, int height, int mx, int my, int dxy, int thirdpel, int dir, int avg)
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
H264Picture * cur_pic_ptr
static int svq3_decode_end(AVCodecContext *avctx)
static const uint8_t svq3_pred_0[25][2]
static enum AVPixelFormat pix_fmts[]
int block_offset[2 *(16 *3)]
block_offset[ 0..23] for frame macroblocks block_offset[24..47] for field macroblocks ...
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
av_cold void ff_h264_free_context(H264Context *h)
Free any data that may have been allocated in the H264 context like SPS, PPS etc. ...
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
discard all non reference
GLint GLenum GLboolean GLsizei stride
common internal api header.
static int get_buffer(AVCodecContext *avctx, H264Picture *pic)
H.264 / AVC / MPEG4 part10 motion vector predicion.
int8_t * intra4x4_pred_mode
static const uint8_t golomb_to_inter_cbp[48]
static const struct @96 svq3_dct_tables[2][16]
int bit_depth_luma
bit_depth_luma_minus8 + 8
static const uint32_t svq3_dequant_coeff[32]
int8_t ref_cache[2][5 *8]
static int svq3_decode_slice_header(AVCodecContext *avctx)
int key_frame
1 -> keyframe, 0-> not
enum AVPictureType pict_type
static const uint8_t svq3_scan[16]
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> dc
AVBufferRef * ref_index_buf[2]
H264Picture last_pic_for_ec
static void * av_mallocz_array(size_t nmemb, size_t size)
static const int8_t svq3_pred_1[6][6][5]
int frame_number
Frame counter, set by libavcodec.
unsigned int left_samples_available
static int skip_1stop_8data_bits(GetBitContext *gb)
#define FFSWAP(type, a, b)
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
AVPixelFormat
Pixel format.
This structure stores compressed data.
static int svq3_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
#define AV_GET_BUFFER_FLAG_REF
The decoder will keep a reference to the frame and may reuse it later.
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
static av_always_inline void pred_motion(const H264Context *const h, H264SliceContext *sl, int n, int part_width, int list, int ref, int *const mx, int *const my)
Get the predicted MV.