On Tue, Dec 27, 2016 at 07:37:09AM +0000, Jerry Jiang wrote: > Hey everyone, > > This is my first patch submitted to FFmpeg, so I'm sure that I missed > something. Please bear with me. :P This patch implements the solution > outlined here: https://guru.multimedia.cx/small-tasks-for-ffmpeg/ > > Activated by passing the flag "-huffman optimal" to the mjpeg encoder, > otherwise the default huffman tables are used. > --- > libavcodec/Makefile | 8 +- > libavcodec/mjpegenc.c | 265 > +++++++++++++++++++-------- > libavcodec/mjpegenc.h | 60 +++++- > libavcodec/mjpegenc_common.c | 161 ++++++++++++++-- > libavcodec/mjpegenc_common.h | 2 + > libavcodec/mjpegenc_huffman.c | 198 ++++++++++++++++++++ > libavcodec/mjpegenc_huffman.h | 71 +++++++ > libavcodec/mpegvideo.h | 1 + > libavcodec/mpegvideo_enc.c | 5 +- > libavcodec/tests/.gitignore | 1 + > libavcodec/tests/mjpegenc_huffman.c | 130 +++++++++++++ > tests/fate/libavcodec.mak | 6 + > tests/fate/vcodec.mak | 4 +- > tests/ref/vsynth/vsynth1-mjpeg-huffman | 4 + > tests/ref/vsynth/vsynth1-mjpeg-trell-huffman | 4 + > tests/ref/vsynth/vsynth2-mjpeg-huffman | 4 + > tests/ref/vsynth/vsynth2-mjpeg-trell-huffman | 4 + > tests/ref/vsynth/vsynth3-mjpeg-huffman | 4 + > tests/ref/vsynth/vsynth3-mjpeg-trell-huffman | 4 + > 19 files changed, 829 insertions(+), 107 deletions(-) > create mode 100644 libavcodec/mjpegenc_huffman.c > create mode 100644 libavcodec/mjpegenc_huffman.h > create mode 100644 libavcodec/tests/mjpegenc_huffman.c > create mode 100644 tests/ref/vsynth/vsynth1-mjpeg-huffman > create mode 100644 tests/ref/vsynth/vsynth1-mjpeg-trell-huffman > create mode 100644 tests/ref/vsynth/vsynth2-mjpeg-huffman > create mode 100644 tests/ref/vsynth/vsynth2-mjpeg-trell-huffman > create mode 100644 tests/ref/vsynth/vsynth3-mjpeg-huffman > create mode 100644 tests/ref/vsynth/vsynth3-mjpeg-trell-huffman > > diff --git a/libavcodec/Makefile b/libavcodec/Makefile > index ec4f7fc..399eaf3 100644 > --- a/libavcodec/Makefile > +++ b/libavcodec/Makefile > @@ -39,6 +39,7 @@ OBJS = allcodecs.o > \ > mediacodec.o \ > mpeg12framerate.o \ > options.o \ > + mjpegenc_huffman.o \ > parser.o \ > profiles.o \ > qsv_api.o \ > @@ -177,7 +178,8 @@ OBJS-$(CONFIG_AMRWB_DECODER) += amrwbdec.o > celp_filters.o \ > OBJS-$(CONFIG_AMV_ENCODER) += mjpegenc.o mjpegenc_common.o \ > mpegvideo_enc.o motion_est.o \ > ratecontrol.o mpeg12data.o \ > - mpegvideo.o > + mpegvideo.o \ > + mjpegenc_huffman.o > OBJS-$(CONFIG_ANM_DECODER) += anm.o > OBJS-$(CONFIG_ANSI_DECODER) += ansi.o cga_data.o > OBJS-$(CONFIG_APE_DECODER) += apedec.o > @@ -379,7 +381,8 @@ OBJS-$(CONFIG_METASOUND_DECODER) += metasound.o > metasound_data.o \ > OBJS-$(CONFIG_MICRODVD_DECODER) += microdvddec.o ass.o > OBJS-$(CONFIG_MIMIC_DECODER) += mimic.o > OBJS-$(CONFIG_MJPEG_DECODER) += mjpegdec.o > -OBJS-$(CONFIG_MJPEG_ENCODER) += mjpegenc.o mjpegenc_common.o > +OBJS-$(CONFIG_MJPEG_ENCODER) += mjpegenc.o mjpegenc_common.o \ > + mjpegenc_huffman.o > OBJS-$(CONFIG_MJPEGB_DECODER) += mjpegbdec.o > OBJS-$(CONFIG_MJPEG_VAAPI_ENCODER) += vaapi_encode_mjpeg.o > OBJS-$(CONFIG_MLP_DECODER) += mlpdec.o mlpdsp.o > @@ -1012,6 +1015,7 @@ TESTPROGS = avpacket > \ > jpeg2000dwt \ > mathops \ > options \ > + mjpegenc_huffman > \ > utils \ > > TESTPROGS-$(CONFIG_CABAC) += cabac > diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c > index 3d11377..d443183 100644 > --- a/libavcodec/mjpegenc.c > +++ b/libavcodec/mjpegenc.c > @@ -39,35 +39,6 @@ > #include "mjpeg.h" > #include "mjpegenc.h" > > -static uint8_t uni_ac_vlc_len[64 * 64 * 2]; > -static uint8_t uni_chroma_ac_vlc_len[64 * 64 * 2]; > - > -static av_cold void init_uni_ac_vlc(const uint8_t huff_size_ac[256], > uint8_t *uni_ac_vlc_len) > -{
This patch is corrupted by newlines [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Those who are best at talking, realize last or never when they are wrong.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel