Tried to tune up to newest version + some fixes. 2016-08-18 4:47 GMT+03:00 Michael Niedermayer <mich...@niedermayer.cc>:
> On Wed, Aug 17, 2016 at 02:07:24PM +0300, Станислав Долганов wrote: > > Hello, > > > > I'm sending the patch set with implementation of GSoC project -- FFV1 P > > frame support. The current FFV1 uses the same OBMC code as the Snow > codec. > > Also new median_me_mp function has appeared. > > > > I'm attaching speed&compression report to every patch to proof > effectivity > > of each implemented part. > > > > I'll appreciate feedback > > > > Best regards, > > Stanislav > > > Makefile | 4 > > ffv1.c | 35 ++++- > > ffv1.h | 15 ++ > > ffv1dec.c | 356 ++++++++++++++++++++++++++++++ > +++++++++++++++++++++ > > ffv1enc.c | 370 ++++++++++++++++++++++++++++++ > +++++++++++++++++++++++- > > x86/me_cmp_init.c | 4 > > 6 files changed, 768 insertions(+), 16 deletions(-) > > 02753371eb59a185eeca7189eb711c3cf0cb5dab 0002-FFV1-p-frames.patch > > From c3b0c6b53f7a558f06879938ffc22b3544a4f276 Mon Sep 17 00:00:00 2001 > > From: Stanislav Dolganov <dolga...@qst.hk> > > Date: Tue, 16 Aug 2016 20:56:26 +0300 > > Subject: [PATCH 2/4] FFV1 p frames > > this still needs to be updated to git master HEAD > > it also contains trailing whitespace > > Applying: FFV1 p frames > .git/rebase-apply/patch:74: trailing whitespace. > > .git/rebase-apply/patch:110: trailing whitespace. > > .git/rebase-apply/patch:167: trailing whitespace. > > .git/rebase-apply/patch:225: trailing whitespace. > > .git/rebase-apply/patch:370: trailing whitespace. > > warning: squelched 30 whitespace errors > warning: 35 lines add whitespace errors. > Using index info to reconstruct a base tree... > M libavcodec/Makefile > M libavcodec/ffv1.c > M libavcodec/ffv1.h > M libavcodec/ffv1dec.c > M libavcodec/ffv1enc.c > .git/rebase-apply/patch:74: trailing whitespace. > > .git/rebase-apply/patch:110: trailing whitespace. > > .git/rebase-apply/patch:167: trailing whitespace. > > .git/rebase-apply/patch:225: trailing whitespace. > > .git/rebase-apply/patch:370: trailing whitespace. > > warning: squelched 30 whitespace errors > warning: 35 lines applied after fixing whitespace errors. > Falling back to patching base and 3-way merge... > Auto-merging libavcodec/ffv1enc.c > CONFLICT (content): Merge conflict in libavcodec/ffv1enc.c > Auto-merging libavcodec/ffv1dec.c > CONFLICT (content): Merge conflict in libavcodec/ffv1dec.c > Auto-merging libavcodec/ffv1.h > Auto-merging libavcodec/ffv1.c > Auto-merging libavcodec/Makefile > error: Failed to merge in the changes. > Patch failed at 0001 FFV1 p frames > The copy of the patch that failed is found in: .git/rebase-apply/patch > When you have resolved this problem, run "git am --continue". > If you prefer to skip this patch, run "git am --skip" instead. > To restore the original branch and stop patching, run "git am --abort". > > > [...] > > @@ -226,6 +248,11 @@ av_cold int ff_ffv1_close(AVCodecContext *avctx) > > av_freep(&fs->sample_buffer); > > } > > > > + if (s->p_image_line_buf) > > + av_freep(&s->p_image_line_buf); > > + if (s->c_image_line_buf) > > + av_freep(&s->c_image_line_buf); > > + > > av_freep(&avctx->stats_out); > > for (j = 0; j < s->quant_table_count; j++) { > > av_freep(&s->initial_states[j]); > > unneeded checks, fring NULL is safe > > > > @@ -238,6 +265,8 @@ av_cold int ff_ffv1_close(AVCodecContext *avctx) > > > > for (i = 0; i < s->max_slice_count; i++) > > av_freep(&s->slice_context[i]); > > + > > + ff_obmc_close(&s->obmc); > > > > return 0; > > } > > diff --git a/libavcodec/ffv1.h b/libavcodec/ffv1.h > > index d9398e5..30943ee 100644 > > --- a/libavcodec/ffv1.h > > +++ b/libavcodec/ffv1.h > > @@ -42,6 +42,11 @@ > > #include "rangecoder.h" > > #include "thread.h" > > > > +#define FF_MPV_OFFSET(x) (offsetof(MpegEncContext, x) + > offsetof(FFV1Context, obmc.m)) > > +#include "obmemc.h" > > + > > +#define MID_STATE 128 > > + > > #ifdef __INTEL_COMPILER > > #undef av_flatten > > #define av_flatten > > @@ -49,6 +54,7 @@ > > > > #define MAX_PLANES 4 > > #define CONTEXT_SIZE 32 > > +#define FRAC_BITS 4 > > > > #define MAX_QUANT_TABLES 8 > > #define MAX_CONTEXT_INPUTS 5 > > @@ -93,7 +99,7 @@ typedef struct FFV1Context { > > int flags; > > int picture_number; > > int key_frame; > > - ThreadFrame picture, last_picture; > > + ThreadFrame picture, last_picture, residual; > > struct FFV1Context *fsrc; > > > > AVFrame *cur; > > @@ -110,11 +116,14 @@ typedef struct FFV1Context { > > int colorspace; > > int16_t *sample_buffer; > > > > + uint16_t *p_image_line_buf, *c_image_line_buf; > > + > > int ec; > > int intra; > > int slice_damaged; > > int key_frame_ok; > > int context_model; > > + int p_frame; > > > > int bits_per_raw_sample; > > int packed_at_lsb; > > @@ -135,6 +144,9 @@ typedef struct FFV1Context { > > int slice_coding_mode; > > int slice_rct_by_coef; > > int slice_rct_ry_coef; > > + > > + OBMCContext obmc; > > + uint8_t block_state[128 + 32*128]; > > } FFV1Context; > > > > int ff_ffv1_common_init(AVCodecContext *avctx); > > > @@ -145,6 +157,7 @@ int ff_ffv1_allocate_initial_states(FFV1Context *f); > > void ff_ffv1_clear_slice_state(FFV1Context *f, FFV1Context *fs); > > int ff_ffv1_close(AVCodecContext *avctx); > > > > + > > static av_always_inline int fold(int diff, int bits) > > { > > if (bits == 8) > > stray change > > [...] > > @@ -921,12 +1119,15 @@ static int decode_frame(AVCodecContext *avctx, > void *data, int *got_frame, AVPac > > ff_build_rac_states(c, 0.05 * (1LL << 32), 256 - 8); > > > > p->pict_type = AV_PICTURE_TYPE_I; //FIXME I vs. P > > + f->obmc.current_picture->pict_type = AV_PICTURE_TYPE_I; > > if (get_rac(c, &keystate)) { > > > - p->key_frame = 1; > > + p->key_frame = 1; > > another stray change > > > > [...] > > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > I have often repented speaking, but never of holding my tongue. > -- Xenocrates > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > -- Станислав Долганов
0002-FFV1-p-frames.patch
Description: Binary data
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel