History

avcodec/mpegvideo: Move noise_reduction to MPVMainEncContext

Andreas Rheinhardt committed 1 year ago

Commit 1b537de1 parent f2ba0673 files · +14 −11Browse files

Unified · Split

3 files
  1. libavcodec/mpegvideo.h +0 −2
  2. libavcodec/mpegvideo_enc.c +11 −8
  3. libavcodec/mpegvideoenc.h +3 −1
libavcodec/mpegvideo.h+0−2
@@ -473,8 +473,6 @@ typedef struct MpegEncContext { · 472 unmodified lines
473 473
474 int error_rate;474 int error_rate;
475 475
476 int noise_reduction;
477
478 int intra_penalty;476 int intra_penalty;
479} MpegEncContext;477} MpegEncContext;
480 478
libavcodec/mpegvideo_enc.c+11−8
@@ -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
1880static void update_noise_reduction(MpegEncContext *s)1880static 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
1901static void frame_start(MpegEncContext *s)1902static 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);
1963vbv_retry:1966vbv_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]);
libavcodec/mpegvideoenc.h+3−1
@@ -68,6 +68,8 @@ typedef struct MPVMainEncContext { · 67 unmodified lines
68 68
69 int scenechange_threshold;69 int scenechange_threshold;
70 70
71 int noise_reduction;
72
71 float border_masking;73 float border_masking;
72 int lmin, lmax;74 int lmin, lmax;
73 int vbv_ignore_qmax;75 int vbv_ignore_qmax;
@@ -199,7 +201,7 @@ FF_MPV_OPT_CMP_FUNC, \ · 125 unmodified lines
199{"skip_factor", "Frame skip factor", FF_MPV_MAIN_OFFSET(frame_skip_factor), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \201{"skip_factor", "Frame skip factor", FF_MPV_MAIN_OFFSET(frame_skip_factor), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
200{"skip_exp", "Frame skip exponent", FF_MPV_MAIN_OFFSET(frame_skip_exp), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \202{"skip_exp", "Frame skip exponent", FF_MPV_MAIN_OFFSET(frame_skip_exp), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
201{"skip_cmp", "Frame skip compare function", FF_MPV_MAIN_OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.i64 = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, .unit = "cmp_func" }, \203{"skip_cmp", "Frame skip compare function", FF_MPV_MAIN_OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.i64 = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, .unit = "cmp_func" }, \
202{"noise_reduction", "Noise reduction", FF_MPV_OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \204{"noise_reduction", "Noise reduction", FF_MPV_MAIN_OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
203{"ps", "RTP payload size in bytes", FF_MPV_OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \205{"ps", "RTP payload size in bytes", FF_MPV_OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \
204 206
205#define FF_MPV_COMMON_BFRAME_OPTS \207#define FF_MPV_COMMON_BFRAME_OPTS \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t