71
void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64],
80
void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64],
72
81
uint16_t (*qmat16)[2][64],
73
82
const uint16_t *quant_matrix,
74
83
int bias, int qmin, int qmax, int intra)
85
FDCTDSPContext *fdsp = &s->fdsp;
79
89
for (qscale = qmin; qscale <= qmax; qscale++) {
81
if (dsp->fdct == ff_jpeg_fdct_islow_8 ||
82
dsp->fdct == ff_jpeg_fdct_islow_10 ||
83
dsp->fdct == ff_faandct) {
91
if (fdsp->fdct == ff_jpeg_fdct_islow_8 ||
92
fdsp->fdct == ff_jpeg_fdct_islow_10 ||
93
fdsp->fdct == ff_faandct) {
84
94
for (i = 0; i < 64; i++) {
85
const int j = dsp->idct_permutation[i];
95
const int j = s->idsp.idct_permutation[i];
86
96
/* 16 <= qscale * quant_matrix[i] <= 7905
87
97
* Assume x = ff_aanscales[i] * qscale * quant_matrix[i]
88
98
* 19952 <= x <= 249205026
1012
1052
int64_t score64 = 0;
1014
1054
for (plane = 0; plane < 3; plane++) {
1015
const int stride = p->f.linesize[plane];
1055
const int stride = p->f->linesize[plane];
1016
1056
const int bw = plane ? 1 : 2;
1017
1057
for (y = 0; y < s->mb_height * bw; y++) {
1018
1058
for (x = 0; x < s->mb_width * bw; x++) {
1019
1059
int off = p->shared ? 0 : 16;
1020
uint8_t *dptr = p->f.data[plane] + 8 * (x + y * stride) + off;
1021
uint8_t *rptr = ref->f.data[plane] + 8 * (x + y * stride);
1022
int v = s->dsp.frame_skip_cmp[1](s, dptr, rptr, stride, 8);
1060
uint8_t *dptr = p->f->data[plane] + 8 * (x + y * stride) + off;
1061
uint8_t *rptr = ref->f->data[plane] + 8 * (x + y * stride);
1062
int v = s->mecc.frame_skip_cmp[1](s, dptr, rptr, stride, 8);
1024
1064
switch (s->avctx->frame_skip_exp) {
1025
1065
case 0: score = FFMAX(score, v); break;
1102
1141
pre_input = *pre_input_ptr;
1104
1143
if (!pre_input.shared && i) {
1105
pre_input.f.data[0] += INPLACE_OFFSET;
1106
pre_input.f.data[1] += INPLACE_OFFSET;
1107
pre_input.f.data[2] += INPLACE_OFFSET;
1144
pre_input.f->data[0] += INPLACE_OFFSET;
1145
pre_input.f->data[1] += INPLACE_OFFSET;
1146
pre_input.f->data[2] += INPLACE_OFFSET;
1110
s->dsp.shrink[scale](s->tmp_frames[i]->data[0], s->tmp_frames[i]->linesize[0],
1111
pre_input.f.data[0], pre_input.f.linesize[0],
1112
c->width, c->height);
1113
s->dsp.shrink[scale](s->tmp_frames[i]->data[1], s->tmp_frames[i]->linesize[1],
1114
pre_input.f.data[1], pre_input.f.linesize[1],
1115
c->width >> 1, c->height >> 1);
1116
s->dsp.shrink[scale](s->tmp_frames[i]->data[2], s->tmp_frames[i]->linesize[2],
1117
pre_input.f.data[2], pre_input.f.linesize[2],
1118
c->width >> 1, c->height >> 1);
1149
s->mpvencdsp.shrink[scale](s->tmp_frames[i]->data[0],
1150
s->tmp_frames[i]->linesize[0],
1151
pre_input.f->data[0],
1152
pre_input.f->linesize[0],
1153
c->width, c->height);
1154
s->mpvencdsp.shrink[scale](s->tmp_frames[i]->data[1],
1155
s->tmp_frames[i]->linesize[1],
1156
pre_input.f->data[1],
1157
pre_input.f->linesize[1],
1158
c->width >> 1, c->height >> 1);
1159
s->mpvencdsp.shrink[scale](s->tmp_frames[i]->data[2],
1160
s->tmp_frames[i]->linesize[2],
1161
pre_input.f->data[2],
1162
pre_input.f->linesize[2],
1163
c->width >> 1, c->height >> 1);
1270
1315
if (s->flags & CODEC_FLAG_CLOSED_GOP)
1272
s->input_picture[b_frames]->f.pict_type = AV_PICTURE_TYPE_I;
1317
s->input_picture[b_frames]->f->pict_type = AV_PICTURE_TYPE_I;
1276
1321
if ((s->flags & CODEC_FLAG_CLOSED_GOP) && b_frames &&
1277
s->input_picture[b_frames]->f.pict_type == AV_PICTURE_TYPE_I)
1322
s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_I)
1280
1325
s->reordered_input_picture[0] = s->input_picture[b_frames];
1281
if (s->reordered_input_picture[0]->f.pict_type != AV_PICTURE_TYPE_I)
1282
s->reordered_input_picture[0]->f.pict_type = AV_PICTURE_TYPE_P;
1283
s->reordered_input_picture[0]->f.coded_picture_number =
1326
if (s->reordered_input_picture[0]->f->pict_type != AV_PICTURE_TYPE_I)
1327
s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_P;
1328
s->reordered_input_picture[0]->f->coded_picture_number =
1284
1329
s->coded_picture_number++;
1285
1330
for (i = 0; i < b_frames; i++) {
1286
1331
s->reordered_input_picture[i + 1] = s->input_picture[i];
1287
s->reordered_input_picture[i + 1]->f.pict_type =
1332
s->reordered_input_picture[i + 1]->f->pict_type =
1288
1333
AV_PICTURE_TYPE_B;
1289
s->reordered_input_picture[i + 1]->f.coded_picture_number =
1334
s->reordered_input_picture[i + 1]->f->coded_picture_number =
1290
1335
s->coded_picture_number++;
1354
1399
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(s->avctx->pix_fmt);
1355
1400
int hshift = desc->log2_chroma_w;
1356
1401
int vshift = desc->log2_chroma_h;
1357
s->dsp.draw_edges(s->current_picture.f.data[0], s->linesize,
1358
s->h_edge_pos, s->v_edge_pos,
1359
EDGE_WIDTH, EDGE_WIDTH,
1360
EDGE_TOP | EDGE_BOTTOM);
1361
s->dsp.draw_edges(s->current_picture.f.data[1], s->uvlinesize,
1362
s->h_edge_pos >> hshift, s->v_edge_pos >> vshift,
1363
EDGE_WIDTH >> hshift, EDGE_WIDTH >> vshift,
1364
EDGE_TOP | EDGE_BOTTOM);
1365
s->dsp.draw_edges(s->current_picture.f.data[2], s->uvlinesize,
1366
s->h_edge_pos >> hshift, s->v_edge_pos >> vshift,
1367
EDGE_WIDTH >> hshift, EDGE_WIDTH >> vshift,
1368
EDGE_TOP | EDGE_BOTTOM);
1402
s->mpvencdsp.draw_edges(s->current_picture.f->data[0], s->linesize,
1403
s->h_edge_pos, s->v_edge_pos,
1404
EDGE_WIDTH, EDGE_WIDTH,
1405
EDGE_TOP | EDGE_BOTTOM);
1406
s->mpvencdsp.draw_edges(s->current_picture.f->data[1], s->uvlinesize,
1407
s->h_edge_pos >> hshift,
1408
s->v_edge_pos >> vshift,
1409
EDGE_WIDTH >> hshift,
1410
EDGE_WIDTH >> vshift,
1411
EDGE_TOP | EDGE_BOTTOM);
1412
s->mpvencdsp.draw_edges(s->current_picture.f->data[2], s->uvlinesize,
1413
s->h_edge_pos >> hshift,
1414
s->v_edge_pos >> vshift,
1415
EDGE_WIDTH >> hshift,
1416
EDGE_WIDTH >> vshift,
1417
EDGE_TOP | EDGE_BOTTOM);
1373
1422
s->last_pict_type = s->pict_type;
1374
s->last_lambda_for [s->pict_type] = s->current_picture_ptr->f.quality;
1423
s->last_lambda_for [s->pict_type] = s->current_picture_ptr->f->quality;
1375
1424
if (s->pict_type!= AV_PICTURE_TYPE_B)
1376
1425
s->last_non_b_pict_type = s->pict_type;
1880
1929
int progressive_score, interlaced_score;
1882
1931
s->interlaced_dct = 0;
1883
progressive_score = s->dsp.ildct_cmp[4](s, ptr_y,
1885
s->dsp.ildct_cmp[4](s, ptr_y + wrap_y * 8,
1886
NULL, wrap_y, 8) - 400;
1932
progressive_score = s->mecc.ildct_cmp[4](s, ptr_y, NULL, wrap_y, 8) +
1933
s->mecc.ildct_cmp[4](s, ptr_y + wrap_y * 8,
1934
NULL, wrap_y, 8) - 400;
1888
1936
if (progressive_score > 0) {
1889
interlaced_score = s->dsp.ildct_cmp[4](s, ptr_y,
1890
NULL, wrap_y * 2, 8) +
1891
s->dsp.ildct_cmp[4](s, ptr_y + wrap_y,
1892
NULL, wrap_y * 2, 8);
1937
interlaced_score = s->mecc.ildct_cmp[4](s, ptr_y,
1938
NULL, wrap_y * 2, 8) +
1939
s->mecc.ildct_cmp[4](s, ptr_y + wrap_y,
1940
NULL, wrap_y * 2, 8);
1893
1941
if (progressive_score > interlaced_score) {
1894
1942
s->interlaced_dct = 1;
1904
s->dsp.get_pixels(s->block[0], ptr_y , wrap_y);
1905
s->dsp.get_pixels(s->block[1], ptr_y + 8 , wrap_y);
1906
s->dsp.get_pixels(s->block[2], ptr_y + dct_offset , wrap_y);
1907
s->dsp.get_pixels(s->block[3], ptr_y + dct_offset + 8 , wrap_y);
1952
s->pdsp.get_pixels(s->block[0], ptr_y, wrap_y);
1953
s->pdsp.get_pixels(s->block[1], ptr_y + 8, wrap_y);
1954
s->pdsp.get_pixels(s->block[2], ptr_y + dct_offset, wrap_y);
1955
s->pdsp.get_pixels(s->block[3], ptr_y + dct_offset + 8, wrap_y);
1909
1957
if (s->flags & CODEC_FLAG_GRAY) {
1910
1958
skip_dct[4] = 1;
1911
1959
skip_dct[5] = 1;
1913
s->dsp.get_pixels(s->block[4], ptr_cb, wrap_c);
1914
s->dsp.get_pixels(s->block[5], ptr_cr, wrap_c);
1961
s->pdsp.get_pixels(s->block[4], ptr_cb, wrap_c);
1962
s->pdsp.get_pixels(s->block[5], ptr_cr, wrap_c);
1915
1963
if (!s->chroma_y_shift) { /* 422 */
1916
s->dsp.get_pixels(s->block[6],
1917
ptr_cb + (dct_offset >> 1), wrap_c);
1918
s->dsp.get_pixels(s->block[7],
1919
ptr_cr + (dct_offset >> 1), wrap_c);
1964
s->pdsp.get_pixels(s->block[6],
1965
ptr_cb + (dct_offset >> 1), wrap_c);
1966
s->pdsp.get_pixels(s->block[7],
1967
ptr_cr + (dct_offset >> 1), wrap_c);
1953
2001
int progressive_score, interlaced_score;
1955
2003
s->interlaced_dct = 0;
1956
progressive_score = s->dsp.ildct_cmp[0](s, dest_y,
1959
s->dsp.ildct_cmp[0](s, dest_y + wrap_y * 8,
1960
ptr_y + wrap_y * 8, wrap_y,
2004
progressive_score = s->mecc.ildct_cmp[0](s, dest_y, ptr_y, wrap_y, 8) +
2005
s->mecc.ildct_cmp[0](s, dest_y + wrap_y * 8,
1963
2009
if (s->avctx->ildct_cmp == FF_CMP_VSSE)
1964
2010
progressive_score -= 400;
1966
2012
if (progressive_score > 0) {
1967
interlaced_score = s->dsp.ildct_cmp[0](s, dest_y,
1970
s->dsp.ildct_cmp[0](s, dest_y + wrap_y,
2013
interlaced_score = s->mecc.ildct_cmp[0](s, dest_y, ptr_y,
2015
s->mecc.ildct_cmp[0](s, dest_y + wrap_y,
1974
2019
if (progressive_score > interlaced_score) {
1975
2020
s->interlaced_dct = 1;
1985
s->dsp.diff_pixels(s->block[0], ptr_y, dest_y, wrap_y);
1986
s->dsp.diff_pixels(s->block[1], ptr_y + 8, dest_y + 8, wrap_y);
1987
s->dsp.diff_pixels(s->block[2], ptr_y + dct_offset,
1988
dest_y + dct_offset, wrap_y);
1989
s->dsp.diff_pixels(s->block[3], ptr_y + dct_offset + 8,
1990
dest_y + dct_offset + 8, wrap_y);
2030
s->pdsp.diff_pixels(s->block[0], ptr_y, dest_y, wrap_y);
2031
s->pdsp.diff_pixels(s->block[1], ptr_y + 8, dest_y + 8, wrap_y);
2032
s->pdsp.diff_pixels(s->block[2], ptr_y + dct_offset,
2033
dest_y + dct_offset, wrap_y);
2034
s->pdsp.diff_pixels(s->block[3], ptr_y + dct_offset + 8,
2035
dest_y + dct_offset + 8, wrap_y);
1992
2037
if (s->flags & CODEC_FLAG_GRAY) {
1993
2038
skip_dct[4] = 1;
1994
2039
skip_dct[5] = 1;
1996
s->dsp.diff_pixels(s->block[4], ptr_cb, dest_cb, wrap_c);
1997
s->dsp.diff_pixels(s->block[5], ptr_cr, dest_cr, wrap_c);
2041
s->pdsp.diff_pixels(s->block[4], ptr_cb, dest_cb, wrap_c);
2042
s->pdsp.diff_pixels(s->block[5], ptr_cr, dest_cr, wrap_c);
1998
2043
if (!s->chroma_y_shift) { /* 422 */
1999
s->dsp.diff_pixels(s->block[6], ptr_cb + (dct_offset >> 1),
2000
dest_cb + (dct_offset >> 1), wrap_c);
2001
s->dsp.diff_pixels(s->block[7], ptr_cr + (dct_offset >> 1),
2002
dest_cr + (dct_offset >> 1), wrap_c);
2044
s->pdsp.diff_pixels(s->block[6], ptr_cb + (dct_offset >> 1),
2045
dest_cb + (dct_offset >> 1), wrap_c);
2046
s->pdsp.diff_pixels(s->block[7], ptr_cr + (dct_offset >> 1),
2047
dest_cr + (dct_offset >> 1), wrap_c);
2005
2050
/* pre quantization */
2006
2051
if (s->current_picture.mc_mb_var[s->mb_stride * mb_y + mb_x] <
2007
2052
2 * s->qscale * s->qscale) {
2008
2053
// FIXME optimize
2009
if (s->dsp.sad[1](NULL, ptr_y , dest_y,
2010
wrap_y, 8) < 20 * s->qscale)
2054
if (s->mecc.sad[1](NULL, ptr_y, dest_y, wrap_y, 8) < 20 * s->qscale)
2011
2055
skip_dct[0] = 1;
2012
if (s->dsp.sad[1](NULL, ptr_y + 8,
2013
dest_y + 8, wrap_y, 8) < 20 * s->qscale)
2056
if (s->mecc.sad[1](NULL, ptr_y + 8, dest_y + 8, wrap_y, 8) < 20 * s->qscale)
2014
2057
skip_dct[1] = 1;
2015
if (s->dsp.sad[1](NULL, ptr_y + dct_offset,
2016
dest_y + dct_offset, wrap_y, 8) < 20 * s->qscale)
2058
if (s->mecc.sad[1](NULL, ptr_y + dct_offset, dest_y + dct_offset,
2059
wrap_y, 8) < 20 * s->qscale)
2017
2060
skip_dct[2] = 1;
2018
if (s->dsp.sad[1](NULL, ptr_y + dct_offset + 8,
2019
dest_y + dct_offset + 8,
2020
wrap_y, 8) < 20 * s->qscale)
2061
if (s->mecc.sad[1](NULL, ptr_y + dct_offset + 8, dest_y + dct_offset + 8,
2062
wrap_y, 8) < 20 * s->qscale)
2021
2063
skip_dct[3] = 1;
2022
if (s->dsp.sad[1](NULL, ptr_cb, dest_cb,
2023
wrap_c, 8) < 20 * s->qscale)
2064
if (s->mecc.sad[1](NULL, ptr_cb, dest_cb, wrap_c, 8) < 20 * s->qscale)
2024
2065
skip_dct[4] = 1;
2025
if (s->dsp.sad[1](NULL, ptr_cr, dest_cr,
2026
wrap_c, 8) < 20 * s->qscale)
2066
if (s->mecc.sad[1](NULL, ptr_cr, dest_cr, wrap_c, 8) < 20 * s->qscale)
2027
2067
skip_dct[5] = 1;
2028
2068
if (!s->chroma_y_shift) { /* 422 */
2029
if (s->dsp.sad[1](NULL, ptr_cb + (dct_offset >> 1),
2030
dest_cb + (dct_offset >> 1),
2031
wrap_c, 8) < 20 * s->qscale)
2069
if (s->mecc.sad[1](NULL, ptr_cb + (dct_offset >> 1),
2070
dest_cb + (dct_offset >> 1),
2071
wrap_c, 8) < 20 * s->qscale)
2032
2072
skip_dct[6] = 1;
2033
if (s->dsp.sad[1](NULL, ptr_cr + (dct_offset >> 1),
2034
dest_cr + (dct_offset >> 1),
2035
wrap_c, 8) < 20 * s->qscale)
2073
if (s->mecc.sad[1](NULL, ptr_cr + (dct_offset >> 1),
2074
dest_cr + (dct_offset >> 1),
2075
wrap_c, 8) < 20 * s->qscale)
2036
2076
skip_dct[7] = 1;
2322
2362
if(w==16 && h==16)
2323
2363
if(s->avctx->mb_cmp == FF_CMP_NSSE){
2324
return s->dsp.nsse[0](s, s->new_picture.f.data[0] + s->mb_x*16 + s->mb_y*s->linesize*16, s->dest[0], s->linesize, 16)
2325
+s->dsp.nsse[1](s, s->new_picture.f.data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[1], s->uvlinesize, 8)
2326
+s->dsp.nsse[1](s, s->new_picture.f.data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[2], s->uvlinesize, 8);
2364
return s->mecc.nsse[0](s, s->new_picture.f->data[0] + s->mb_x * 16 + s->mb_y * s->linesize * 16, s->dest[0], s->linesize, 16) +
2365
s->mecc.nsse[1](s, s->new_picture.f->data[1] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[1], s->uvlinesize, 8) +
2366
s->mecc.nsse[1](s, s->new_picture.f->data[2] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[2], s->uvlinesize, 8);
2328
return s->dsp.sse[0](NULL, s->new_picture.f.data[0] + s->mb_x*16 + s->mb_y*s->linesize*16, s->dest[0], s->linesize, 16)
2329
+s->dsp.sse[1](NULL, s->new_picture.f.data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[1], s->uvlinesize, 8)
2330
+s->dsp.sse[1](NULL, s->new_picture.f.data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[2], s->uvlinesize, 8);
2368
return s->mecc.sse[0](NULL, s->new_picture.f->data[0] + s->mb_x * 16 + s->mb_y * s->linesize * 16, s->dest[0], s->linesize, 16) +
2369
s->mecc.sse[1](NULL, s->new_picture.f->data[1] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[1], s->uvlinesize, 8) +
2370
s->mecc.sse[1](NULL, s->new_picture.f->data[2] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[2], s->uvlinesize, 8);
2333
return sse(s, s->new_picture.f.data[0] + s->mb_x*16 + s->mb_y*s->linesize*16, s->dest[0], w, h, s->linesize)
2334
+sse(s, s->new_picture.f.data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[1], w>>1, h>>1, s->uvlinesize)
2335
+sse(s, s->new_picture.f.data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[2], w>>1, h>>1, s->uvlinesize);
2373
return sse(s, s->new_picture.f->data[0] + s->mb_x*16 + s->mb_y*s->linesize*16, s->dest[0], w, h, s->linesize)
2374
+sse(s, s->new_picture.f->data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[1], w>>1, h>>1, s->uvlinesize)
2375
+sse(s, s->new_picture.f->data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[2], w>>1, h>>1, s->uvlinesize);
2338
2378
static int pre_estimate_motion_thread(AVCodecContext *c, void *arg){
3058
3093
if(s->mb_x*16 + 16 > s->width ) w= s->width - s->mb_x*16;
3059
3094
if(s->mb_y*16 + 16 > s->height) h= s->height- s->mb_y*16;
3061
s->current_picture.f.error[0] += sse(
3062
s, s->new_picture.f.data[0] + s->mb_x*16 + s->mb_y*s->linesize*16,
3096
s->current_picture.f->error[0] += sse(
3097
s, s->new_picture.f->data[0] + s->mb_x*16 + s->mb_y*s->linesize*16,
3063
3098
s->dest[0], w, h, s->linesize);
3064
s->current_picture.f.error[1] += sse(
3065
s, s->new_picture.f.data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*chr_h,
3099
s->current_picture.f->error[1] += sse(
3100
s, s->new_picture.f->data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*chr_h,
3066
3101
s->dest[1], w>>1, h>>s->chroma_y_shift, s->uvlinesize);
3067
s->current_picture.f.error[2] += sse(
3068
s, s->new_picture.f.data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*chr_h,
3102
s->current_picture.f->error[2] += sse(
3103
s, s->new_picture.f->data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*chr_h,
3069
3104
s->dest[2], w>>1, h>>s->chroma_y_shift, s->uvlinesize);
3071
3106
if(s->loop_filter){
3337
3372
if (s->out_format == FMT_MJPEG) {
3338
3373
/* for mjpeg, we do include qscale in the matrix */
3339
3374
for(i=1;i<64;i++){
3340
int j= s->dsp.idct_permutation[i];
3375
int j = s->idsp.idct_permutation[i];
3342
3377
s->intra_matrix[j] = av_clip_uint8((ff_mpeg1_default_intra_matrix[i] * s->qscale) >> 3);
3344
3379
s->y_dc_scale_table=
3345
3380
s->c_dc_scale_table= ff_mpeg2_dc_scale_table[s->intra_dc_precision];
3346
3381
s->intra_matrix[0] = ff_mpeg2_dc_scale_table[s->intra_dc_precision][8];
3347
ff_convert_matrix(&s->dsp, s->q_intra_matrix, s->q_intra_matrix16,
3382
ff_convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16,
3348
3383
s->intra_matrix, s->intra_quant_bias, 8, 8, 1);
3352
3387
//FIXME var duplication
3353
s->current_picture_ptr->f.key_frame =
3354
s->current_picture.f.key_frame = s->pict_type == AV_PICTURE_TYPE_I; //FIXME pic_ptr
3355
s->current_picture_ptr->f.pict_type =
3356
s->current_picture.f.pict_type = s->pict_type;
3388
s->current_picture_ptr->f->key_frame =
3389
s->current_picture.f->key_frame = s->pict_type == AV_PICTURE_TYPE_I; //FIXME pic_ptr
3390
s->current_picture_ptr->f->pict_type =
3391
s->current_picture.f->pict_type = s->pict_type;
3358
if (s->current_picture.f.key_frame)
3393
if (s->current_picture.f->key_frame)
3359
3394
s->picture_in_gop_number=0;
3361
3396
s->last_bits= put_bits_count(&s->pb);