mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-03 05:22:10 +00:00
mjpeg/ljpegenc: factor ff_mjpeg_init_hvsample() out
This reduces the amount of duplicated code Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
535af2c222
commit
2b215f3939
@ -272,7 +272,6 @@ static av_cold int ljpeg_encode_close(AVCodecContext *avctx)
|
||||
static av_cold int ljpeg_encode_init(AVCodecContext *avctx)
|
||||
{
|
||||
LJpegEncContext *s = avctx->priv_data;
|
||||
int chroma_v_shift, chroma_h_shift;
|
||||
|
||||
if ((avctx->pix_fmt == AV_PIX_FMT_YUV420P ||
|
||||
avctx->pix_fmt == AV_PIX_FMT_YUV422P ||
|
||||
@ -296,26 +295,7 @@ static av_cold int ljpeg_encode_init(AVCodecContext *avctx)
|
||||
ff_dsputil_init(&s->dsp, avctx);
|
||||
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct);
|
||||
|
||||
av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, &chroma_h_shift,
|
||||
&chroma_v_shift);
|
||||
|
||||
if ( avctx->pix_fmt == AV_PIX_FMT_BGR0
|
||||
|| avctx->pix_fmt == AV_PIX_FMT_BGRA
|
||||
|| avctx->pix_fmt == AV_PIX_FMT_BGR24) {
|
||||
s->vsample[0] = s->hsample[0] =
|
||||
s->vsample[1] = s->hsample[1] =
|
||||
s->vsample[2] = s->hsample[2] = 1;
|
||||
} else if (avctx->pix_fmt == AV_PIX_FMT_YUV444P || avctx->pix_fmt == AV_PIX_FMT_YUVJ444P) {
|
||||
s->vsample[0] = s->vsample[1] = s->vsample[2] = 2;
|
||||
s->hsample[0] = s->hsample[1] = s->hsample[2] = 1;
|
||||
} else {
|
||||
s->vsample[0] = 2;
|
||||
s->vsample[1] = 2 >> chroma_v_shift;
|
||||
s->vsample[2] = 2 >> chroma_v_shift;
|
||||
s->hsample[0] = 2;
|
||||
s->hsample[1] = 2 >> chroma_h_shift;
|
||||
s->hsample[2] = 2 >> chroma_h_shift;
|
||||
}
|
||||
ff_mjpeg_init_hvsample(avctx, s->hsample, s->vsample);
|
||||
|
||||
ff_mjpeg_build_huffman_codes(s->huff_size_dc_luminance,
|
||||
s->huff_code_dc_luminance,
|
||||
|
@ -204,14 +204,9 @@ static void jpeg_put_comments(AVCodecContext *avctx, PutBitContext *p)
|
||||
}
|
||||
}
|
||||
|
||||
void ff_mjpeg_encode_picture_header(AVCodecContext *avctx, PutBitContext *pb,
|
||||
ScanTable *intra_scantable,
|
||||
uint16_t intra_matrix[64])
|
||||
void ff_mjpeg_init_hvsample(AVCodecContext *avctx, int hsample[3], int vsample[3])
|
||||
{
|
||||
int chroma_h_shift, chroma_v_shift;
|
||||
const int lossless = avctx->codec_id != AV_CODEC_ID_MJPEG && avctx->codec_id != AV_CODEC_ID_AMV;
|
||||
int hsample[3], vsample[3];
|
||||
int i;
|
||||
|
||||
av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, &chroma_h_shift,
|
||||
&chroma_v_shift);
|
||||
@ -233,6 +228,17 @@ void ff_mjpeg_encode_picture_header(AVCodecContext *avctx, PutBitContext *pb,
|
||||
hsample[1] = 2 >> chroma_h_shift;
|
||||
hsample[2] = 2 >> chroma_h_shift;
|
||||
}
|
||||
}
|
||||
|
||||
void ff_mjpeg_encode_picture_header(AVCodecContext *avctx, PutBitContext *pb,
|
||||
ScanTable *intra_scantable,
|
||||
uint16_t intra_matrix[64])
|
||||
{
|
||||
const int lossless = avctx->codec_id != AV_CODEC_ID_MJPEG && avctx->codec_id != AV_CODEC_ID_AMV;
|
||||
int hsample[3], vsample[3];
|
||||
int i;
|
||||
|
||||
ff_mjpeg_init_hvsample(avctx, hsample, vsample);
|
||||
|
||||
put_marker(pb, SOI);
|
||||
|
||||
|
@ -57,6 +57,7 @@ void ff_mjpeg_encode_picture_header(AVCodecContext *avctx, PutBitContext *pb,
|
||||
void ff_mjpeg_encode_picture_trailer(PutBitContext *pb, int header_bits);
|
||||
void ff_mjpeg_escape_FF(PutBitContext *pb, int start);
|
||||
void ff_mjpeg_encode_stuffing(MpegEncContext *s);
|
||||
void ff_mjpeg_init_hvsample(AVCodecContext *avctx, int hsample[3], int vsample[3]);
|
||||
void ff_mjpeg_encode_dc(PutBitContext *pb, int val,
|
||||
uint8_t *huff_size, uint16_t *huff_code);
|
||||
void ff_mjpeg_encode_mb(MpegEncContext *s, int16_t block[6][64]);
|
||||
|
Loading…
Reference in New Issue
Block a user