| @@ -442,7 +442,7 @@ static av_cold int init_buffers(MPVMainEncContext *const m, AVCodecContext *avct · 441 unmodified lines |
| 442 | int has_b_frames = !!m->max_b_frames, nb_mv_tables = 1 + 5 * has_b_frames; | 442 | int has_b_frames = !!m->max_b_frames, nb_mv_tables = 1 + 5 * has_b_frames; |
| 443 | int16_t (*mv_table)[2]; | 443 | int16_t (*mv_table)[2]; |
| 444 | | 444 | |
| 445 | if (s->noise_reduction) { | 445 | if (m->noise_reduction) { |
| 446 | if (!FF_ALLOCZ_TYPED_ARRAY(s->dct_offset, 2)) | 446 | if (!FF_ALLOCZ_TYPED_ARRAY(s->dct_offset, 2)) |
| 447 | return AVERROR(ENOMEM); | 447 | return AVERROR(ENOMEM); |
| 448 | dct_error = av_mallocz(ALIGN - 1 + nb_slices * DCT_ERROR_SIZE); | 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 | s->last_non_b_pict_type = s->pict_type; | 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 | int intra, i; | 1883 | int intra, i; |
| 1883 | | 1884 | |
| 1884 | for (intra = 0; intra < 2; intra++) { | 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 | for (i = 0; i < 64; i++) { | 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 | s->dct_count[intra] + | 1895 | s->dct_count[intra] + |
| 1895 | s->dct_error_sum[intra][i] / 2) / | 1896 | s->dct_error_sum[intra][i] / 2) / |
| 1896 | (s->dct_error_sum[intra][i] + 1); | 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 | s->cur_pic.ptr->f->pict_type = s->pict_type; | 1906 | s->cur_pic.ptr->f->pict_type = s->pict_type; |
| 1904 | | 1907 | |
| 1905 | if (s->pict_type != AV_PICTURE_TYPE_B) { | 1908 | if (s->pict_type != AV_PICTURE_TYPE_B) { |
| @@ -1907,9 +1910,9 @@ static void frame_start(MpegEncContext *s) · 1 unmodified line |
| 1907 | ff_mpv_replace_picture(&s->next_pic, &s->cur_pic); | 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 | if (s->dct_error_sum) { | 1914 | if (s->dct_error_sum) { |
| 1911 | av_assert2(s->noise_reduction && s->encoding); | 1915 | update_noise_reduction(m); |
| 1912 | update_noise_reduction(s); | | |
| 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 | s->pict_type = s->new_pic->pict_type; | 1963 | s->pict_type = s->new_pic->pict_type; |
| 1961 | //emms_c(); | 1964 | //emms_c(); |
| 1962 | frame_start(s); | 1965 | frame_start(m); |
| 1963 | vbv_retry: | 1966 | vbv_retry: |
| 1964 | ret = encode_picture(m, pkt); | 1967 | ret = encode_picture(m, pkt); |
| 1965 | if (growing_buffer) { | 1968 | if (growing_buffer) { |
| @@ -3598,7 +3601,7 @@ static void merge_context_after_encode(MpegEncContext *dst, MpegEncContext *src) · 1632 unmodified lines |
| 3598 | MERGE(encoding_error[1]); | 3601 | MERGE(encoding_error[1]); |
| 3599 | MERGE(encoding_error[2]); | 3602 | MERGE(encoding_error[2]); |
| 3600 | | 3603 | |
| 3601 | if (dst->noise_reduction){ | 3604 | if (dst->dct_error_sum) { |
| 3602 | for(i=0; i<64; i++){ | 3605 | for(i=0; i<64; i++){ |
| 3603 | MERGE(dct_error_sum[0][i]); | 3606 | MERGE(dct_error_sum[0][i]); |
| 3604 | MERGE(dct_error_sum[1][i]); | 3607 | MERGE(dct_error_sum[1][i]); |