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
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel