| @@ -442,7 +442,7 @@ static av_cold int init_buffers(MPVMainEncContext *const m, AVCodecContext *avct · 441 unmodified lines |
| 442 | 442 | int has_b_frames = !!m->max_b_frames, nb_mv_tables = 1 + 5 * has_b_frames; |
| 443 | 443 | int16_t (*mv_table)[2]; |
| 444 | 444 | |
| 445 | | − if (s->noise_reduction) { |
| 445 | + if (m->noise_reduction) { |
| 446 | 446 | if (!FF_ALLOCZ_TYPED_ARRAY(s->dct_offset, 2)) |
| 447 | 447 | return AVERROR(ENOMEM); |
| 448 | 448 | dct_error = av_mallocz(ALIGN - 1 + nb_slices * DCT_ERROR_SIZE); |
| @@ -1877,8 +1877,9 @@ static void frame_end(MPVMainEncContext *const m) · 1428 unmodified lines |
| 1877 | 1877 | s->last_non_b_pict_type = s->pict_type; |
| 1878 | 1878 | } |
| 1879 | 1879 | |
| 1880 | | −static void update_noise_reduction(MpegEncContext *s) |
| 1880 | +static void update_noise_reduction(MPVMainEncContext *const m) |
| 1881 | 1881 | { |
| 1882 | + MpegEncContext *const s = &m->s; |
| 1882 | 1883 | int intra, i; |
| 1883 | 1884 | |
| 1884 | 1885 | for (intra = 0; intra < 2; intra++) { |
| @@ -1890,7 +1891,7 @@ static void update_noise_reduction(MpegEncContext *s) · 5 unmodified lines |
| 1890 | 1891 | } |
| 1891 | 1892 | |
| 1892 | 1893 | for (i = 0; i < 64; i++) { |
| 1893 | | − s->dct_offset[intra][i] = (s->noise_reduction * |
| 1894 | + s->dct_offset[intra][i] = (m->noise_reduction * |
| 1894 | 1895 | s->dct_count[intra] + |
| 1895 | 1896 | s->dct_error_sum[intra][i] / 2) / |
| 1896 | 1897 | (s->dct_error_sum[intra][i] + 1); |
| @@ -1898,8 +1899,10 @@ static void update_noise_reduction(MpegEncContext *s) · 1 unmodified line |
| 1898 | 1899 | } |
| 1899 | 1900 | } |
| 1900 | 1901 | |
| 1901 | | −static void frame_start(MpegEncContext *s) |
| 1902 | +static void frame_start(MPVMainEncContext *const m) |
| 1902 | 1903 | { |
| 1904 | + MpegEncContext *const s = &m->s; |
| 1905 | + |
| 1903 | 1906 | s->cur_pic.ptr->f->pict_type = s->pict_type; |
| 1904 | 1907 | |
| 1905 | 1908 | if (s->pict_type != AV_PICTURE_TYPE_B) { |
| @@ -1907,9 +1910,9 @@ static void frame_start(MpegEncContext *s) · 1 unmodified line |
| 1907 | 1910 | ff_mpv_replace_picture(&s->next_pic, &s->cur_pic); |
| 1908 | 1911 | } |
| 1909 | 1912 | |
| 1913 | + av_assert2(!!m->noise_reduction == !!s->dct_error_sum); |
| 1910 | 1914 | if (s->dct_error_sum) { |
| 1911 | | − av_assert2(s->noise_reduction && s->encoding); |
| 1912 | | − update_noise_reduction(s); |
| 1915 | + update_noise_reduction(m); |
| 1913 | 1916 | } |
| 1914 | 1917 | } |
| 1915 | 1918 | |
| @@ -1959,7 +1962,7 @@ int ff_mpv_encode_picture(AVCodecContext *avctx, AVPacket *pkt, · 43 unmodified lines |
| 1959 | 1962 | |
| 1960 | 1963 | s->pict_type = s->new_pic->pict_type; |
| 1961 | 1964 | //emms_c(); |
| 1962 | | − frame_start(s); |
| 1965 | + frame_start(m); |
| 1963 | 1966 | vbv_retry: |
| 1964 | 1967 | ret = encode_picture(m, pkt); |
| 1965 | 1968 | if (growing_buffer) { |
| @@ -3598,7 +3601,7 @@ static void merge_context_after_encode(MpegEncContext *dst, MpegEncContext *src) · 1632 unmodified lines |
| 3598 | 3601 | MERGE(encoding_error[1]); |
| 3599 | 3602 | MERGE(encoding_error[2]); |
| 3600 | 3603 | |
| 3601 | | − if (dst->noise_reduction){ |
| 3604 | + if (dst->dct_error_sum) { |
| 3602 | 3605 | for(i=0; i<64; i++){ |
| 3603 | 3606 | MERGE(dct_error_sum[0][i]); |
| 3604 | 3607 | MERGE(dct_error_sum[1][i]); |