mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
mjpegdec: add 'extern_huff' private option.
Deprecate CODEC_FLAG_EXTERN_HUFF
This commit is contained in:
parent
4623420d84
commit
1f0c7020a1
@ -581,7 +581,9 @@ typedef struct RcOverride{
|
|||||||
#define CODEC_FLAG_INPUT_PRESERVED 0x0100
|
#define CODEC_FLAG_INPUT_PRESERVED 0x0100
|
||||||
#define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode.
|
#define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode.
|
||||||
#define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode.
|
#define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode.
|
||||||
|
#if FF_API_MJPEG_GLOBAL_OPTS
|
||||||
#define CODEC_FLAG_EXTERN_HUFF 0x1000 ///< Use external Huffman table (for MJPEG).
|
#define CODEC_FLAG_EXTERN_HUFF 0x1000 ///< Use external Huffman table (for MJPEG).
|
||||||
|
#endif
|
||||||
#define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale.
|
#define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale.
|
||||||
#define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges.
|
#define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges.
|
||||||
#define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding.
|
#define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding.
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include "libavutil/imgutils.h"
|
#include "libavutil/imgutils.h"
|
||||||
|
#include "libavutil/opt.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "dsputil.h"
|
#include "dsputil.h"
|
||||||
#include "mjpeg.h"
|
#include "mjpeg.h"
|
||||||
@ -96,7 +97,11 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx)
|
|||||||
|
|
||||||
build_basic_mjpeg_vlc(s);
|
build_basic_mjpeg_vlc(s);
|
||||||
|
|
||||||
|
#if FF_API_MJPEG_GLOBAL_OPTS
|
||||||
if (avctx->flags & CODEC_FLAG_EXTERN_HUFF)
|
if (avctx->flags & CODEC_FLAG_EXTERN_HUFF)
|
||||||
|
s->extern_huff = 1;
|
||||||
|
#endif
|
||||||
|
if (s->extern_huff)
|
||||||
{
|
{
|
||||||
av_log(avctx, AV_LOG_INFO, "mjpeg: using external huffman table\n");
|
av_log(avctx, AV_LOG_INFO, "mjpeg: using external huffman table\n");
|
||||||
init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size*8);
|
init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size*8);
|
||||||
@ -1597,6 +1602,20 @@ av_cold int ff_mjpeg_decode_end(AVCodecContext *avctx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define OFFSET(x) offsetof(MJpegDecodeContext, x)
|
||||||
|
#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
|
||||||
|
static const AVOption options[] = {
|
||||||
|
{ "extern_huff", "Use external huffman table.", OFFSET(extern_huff), FF_OPT_TYPE_INT, { 0 }, 0, 1, VD },
|
||||||
|
{ NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const AVClass mjpegdec_class = {
|
||||||
|
.class_name = "MJPEG decoder",
|
||||||
|
.item_name = av_default_item_name,
|
||||||
|
.option = options,
|
||||||
|
.version = LIBAVUTIL_VERSION_INT,
|
||||||
|
};
|
||||||
|
|
||||||
AVCodec ff_mjpeg_decoder = {
|
AVCodec ff_mjpeg_decoder = {
|
||||||
.name = "mjpeg",
|
.name = "mjpeg",
|
||||||
.type = AVMEDIA_TYPE_VIDEO,
|
.type = AVMEDIA_TYPE_VIDEO,
|
||||||
@ -1608,6 +1627,7 @@ AVCodec ff_mjpeg_decoder = {
|
|||||||
.capabilities = CODEC_CAP_DR1,
|
.capabilities = CODEC_CAP_DR1,
|
||||||
.max_lowres = 3,
|
.max_lowres = 3,
|
||||||
.long_name = NULL_IF_CONFIG_SMALL("MJPEG (Motion JPEG)"),
|
.long_name = NULL_IF_CONFIG_SMALL("MJPEG (Motion JPEG)"),
|
||||||
|
.priv_class = &mjpegdec_class,
|
||||||
};
|
};
|
||||||
|
|
||||||
AVCodec ff_thp_decoder = {
|
AVCodec ff_thp_decoder = {
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
#ifndef AVCODEC_MJPEGDEC_H
|
#ifndef AVCODEC_MJPEGDEC_H
|
||||||
#define AVCODEC_MJPEGDEC_H
|
#define AVCODEC_MJPEGDEC_H
|
||||||
|
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "get_bits.h"
|
#include "get_bits.h"
|
||||||
#include "dsputil.h"
|
#include "dsputil.h"
|
||||||
@ -36,6 +38,7 @@
|
|||||||
#define MAX_COMPONENTS 4
|
#define MAX_COMPONENTS 4
|
||||||
|
|
||||||
typedef struct MJpegDecodeContext {
|
typedef struct MJpegDecodeContext {
|
||||||
|
AVClass *class;
|
||||||
AVCodecContext *avctx;
|
AVCodecContext *avctx;
|
||||||
GetBitContext gb;
|
GetBitContext gb;
|
||||||
|
|
||||||
@ -106,6 +109,8 @@ typedef struct MJpegDecodeContext {
|
|||||||
|
|
||||||
uint16_t (*ljpeg_buffer)[4];
|
uint16_t (*ljpeg_buffer)[4];
|
||||||
unsigned int ljpeg_buffer_size;
|
unsigned int ljpeg_buffer_size;
|
||||||
|
|
||||||
|
int extern_huff;
|
||||||
} MJpegDecodeContext;
|
} MJpegDecodeContext;
|
||||||
|
|
||||||
int ff_mjpeg_decode_init(AVCodecContext *avctx);
|
int ff_mjpeg_decode_init(AVCodecContext *avctx);
|
||||||
|
@ -87,7 +87,9 @@ static const AVOption options[]={
|
|||||||
{"input_preserved", NULL, 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INPUT_PRESERVED }, INT_MIN, INT_MAX, 0, "flags"},
|
{"input_preserved", NULL, 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INPUT_PRESERVED }, INT_MIN, INT_MAX, 0, "flags"},
|
||||||
{"pass1", "use internal 2pass ratecontrol in first pass mode", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS1 }, INT_MIN, INT_MAX, 0, "flags"},
|
{"pass1", "use internal 2pass ratecontrol in first pass mode", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS1 }, INT_MIN, INT_MAX, 0, "flags"},
|
||||||
{"pass2", "use internal 2pass ratecontrol in second pass mode", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS2 }, INT_MIN, INT_MAX, 0, "flags"},
|
{"pass2", "use internal 2pass ratecontrol in second pass mode", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS2 }, INT_MIN, INT_MAX, 0, "flags"},
|
||||||
|
#if FF_API_MJPEG_GLOBAL_OPTS
|
||||||
{"extern_huff", "use external huffman table (for mjpeg)", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_EXTERN_HUFF }, INT_MIN, INT_MAX, 0, "flags"},
|
{"extern_huff", "use external huffman table (for mjpeg)", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_EXTERN_HUFF }, INT_MIN, INT_MAX, 0, "flags"},
|
||||||
|
#endif
|
||||||
{"gray", "only decode/encode grayscale", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GRAY }, INT_MIN, INT_MAX, V|E|D, "flags"},
|
{"gray", "only decode/encode grayscale", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GRAY }, INT_MIN, INT_MAX, V|E|D, "flags"},
|
||||||
{"emu_edge", "don't draw edges", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_EMU_EDGE }, INT_MIN, INT_MAX, 0, "flags"},
|
{"emu_edge", "don't draw edges", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_EMU_EDGE }, INT_MIN, INT_MAX, 0, "flags"},
|
||||||
{"psnr", "error[?] variables will be set during encoding", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PSNR }, INT_MIN, INT_MAX, V|E, "flags"},
|
{"psnr", "error[?] variables will be set during encoding", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PSNR }, INT_MIN, INT_MAX, V|E, "flags"},
|
||||||
|
@ -95,5 +95,8 @@
|
|||||||
#ifndef FF_API_SNOW_GLOBAL_OPTS
|
#ifndef FF_API_SNOW_GLOBAL_OPTS
|
||||||
#define FF_API_SNOW_GLOBAL_OPTS (LIBAVCODEC_VERSION_MAJOR < 54)
|
#define FF_API_SNOW_GLOBAL_OPTS (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef FF_API_MJPEG_GLOBAL_OPTS
|
||||||
|
#define FF_API_MJPEG_GLOBAL_OPTS (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* AVCODEC_VERSION_H */
|
#endif /* AVCODEC_VERSION_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user