Drop the mpegvideo dependency for svq3 in configure.tags/n2.3
| @@ -1820,7 +1820,7 @@ sipr_decoder_select="lsp" | |||||
| sp5x_decoder_select="mjpeg_decoder" | sp5x_decoder_select="mjpeg_decoder" | ||||
| svq1_decoder_select="hpeldsp" | svq1_decoder_select="hpeldsp" | ||||
| svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc" | svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc" | ||||
| svq3_decoder_select="h264_decoder hpeldsp mpegvideo" | |||||
| svq3_decoder_select="h264_decoder hpeldsp" | |||||
| svq3_decoder_suggest="zlib" | svq3_decoder_suggest="zlib" | ||||
| tak_decoder_select="dsputil" | tak_decoder_select="dsputil" | ||||
| theora_decoder_select="vp3_decoder" | theora_decoder_select="vp3_decoder" | ||||
| @@ -57,7 +57,8 @@ OBJS-$(CONFIG_MPEGAUDIODSP) += mpegaudiodsp.o \ | |||||
| mpegaudiodsp_data.o \ | mpegaudiodsp_data.o \ | ||||
| mpegaudiodsp_fixed.o \ | mpegaudiodsp_fixed.o \ | ||||
| mpegaudiodsp_float.o | mpegaudiodsp_float.o | ||||
| OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o mpegvideo_motion.o | |||||
| OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o mpegvideo_motion.o \ | |||||
| mpegutils.o | |||||
| OBJS-$(CONFIG_MPEGVIDEOENC) += mpegvideo_enc.o mpeg12data.o \ | OBJS-$(CONFIG_MPEGVIDEOENC) += mpegvideo_enc.o mpeg12data.o \ | ||||
| motion_est.o ratecontrol.o | motion_est.o ratecontrol.o | ||||
| OBJS-$(CONFIG_RANGECODER) += rangecoder.o | OBJS-$(CONFIG_RANGECODER) += rangecoder.o | ||||
| @@ -335,7 +336,7 @@ OBJS-$(CONFIG_SUNRAST_ENCODER) += sunrastenc.o | |||||
| OBJS-$(CONFIG_SVQ1_DECODER) += svq1dec.o svq1.o svq13.o h263.o | OBJS-$(CONFIG_SVQ1_DECODER) += svq1dec.o svq1.o svq13.o h263.o | ||||
| OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o \ | OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o \ | ||||
| h263.o ituh263enc.o | h263.o ituh263enc.o | ||||
| OBJS-$(CONFIG_SVQ3_DECODER) += svq3.o svq13.o | |||||
| OBJS-$(CONFIG_SVQ3_DECODER) += svq3.o svq13.o mpegutils.o | |||||
| OBJS-$(CONFIG_TAK_DECODER) += takdec.o tak.o | OBJS-$(CONFIG_TAK_DECODER) += takdec.o tak.o | ||||
| OBJS-$(CONFIG_TARGA_DECODER) += targa.o | OBJS-$(CONFIG_TARGA_DECODER) += targa.o | ||||
| OBJS-$(CONFIG_TARGA_ENCODER) += targaenc.o rle.o | OBJS-$(CONFIG_TARGA_ENCODER) += targaenc.o rle.o | ||||
| @@ -0,0 +1,80 @@ | |||||
| /* | |||||
| * Mpeg video formats-related defines and utility functions | |||||
| * | |||||
| * This file is part of Libav. | |||||
| * | |||||
| * Libav is free software; you can redistribute it and/or | |||||
| * modify it under the terms of the GNU Lesser General Public | |||||
| * License as published by the Free Software Foundation; either | |||||
| * version 2.1 of the License, or (at your option) any later version. | |||||
| * | |||||
| * Libav is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| * Lesser General Public License for more details. | |||||
| * | |||||
| * You should have received a copy of the GNU Lesser General Public | |||||
| * License along with Libav; if not, write to the Free Software | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||||
| */ | |||||
| #include <stdint.h> | |||||
| #include "libavutil/common.h" | |||||
| #include "libavutil/frame.h" | |||||
| #include "libavutil/pixdesc.h" | |||||
| #include "avcodec.h" | |||||
| #include "mpegutils.h" | |||||
| void ff_draw_horiz_band(AVCodecContext *avctx, | |||||
| AVFrame *cur, AVFrame *last, | |||||
| int y, int h, int picture_structure, | |||||
| int first_field, int low_delay) | |||||
| { | |||||
| const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); | |||||
| int vshift = desc->log2_chroma_h; | |||||
| const int field_pic = picture_structure != PICT_FRAME; | |||||
| if (field_pic) { | |||||
| h <<= 1; | |||||
| y <<= 1; | |||||
| } | |||||
| h = FFMIN(h, avctx->height - y); | |||||
| if (field_pic && first_field && | |||||
| !(avctx->slice_flags & SLICE_FLAG_ALLOW_FIELD)) | |||||
| return; | |||||
| if (avctx->draw_horiz_band) { | |||||
| AVFrame *src; | |||||
| int offset[AV_NUM_DATA_POINTERS]; | |||||
| int i; | |||||
| if (cur->pict_type == AV_PICTURE_TYPE_B || low_delay || | |||||
| (avctx->slice_flags & SLICE_FLAG_CODED_ORDER)) | |||||
| src = cur; | |||||
| else if (last) | |||||
| src = last; | |||||
| else | |||||
| return; | |||||
| if (cur->pict_type == AV_PICTURE_TYPE_B && | |||||
| picture_structure == PICT_FRAME && | |||||
| avctx->codec_id != AV_CODEC_ID_SVQ3) { | |||||
| for (i = 0; i < AV_NUM_DATA_POINTERS; i++) | |||||
| offset[i] = 0; | |||||
| } else { | |||||
| offset[0]= y * src->linesize[0]; | |||||
| offset[1]= | |||||
| offset[2]= (y >> vshift) * src->linesize[1]; | |||||
| for (i = 3; i < AV_NUM_DATA_POINTERS; i++) | |||||
| offset[i] = 0; | |||||
| } | |||||
| emms_c(); | |||||
| avctx->draw_horiz_band(avctx, src, offset, | |||||
| y, picture_structure, h); | |||||
| } | |||||
| } | |||||
| @@ -21,8 +21,14 @@ | |||||
| #ifndef AVCODEC_MPEGUTILS_H | #ifndef AVCODEC_MPEGUTILS_H | ||||
| #define AVCODEC_MPEGUTILS_H | #define AVCODEC_MPEGUTILS_H | ||||
| #include <stdint.h> | |||||
| #include "libavutil/frame.h" | |||||
| #include "avcodec.h" | |||||
| #include "version.h" | #include "version.h" | ||||
| /* picture type */ | /* picture type */ | ||||
| #define PICT_TOP_FIELD 1 | #define PICT_TOP_FIELD 1 | ||||
| #define PICT_BOTTOM_FIELD 2 | #define PICT_BOTTOM_FIELD 2 | ||||
| @@ -108,4 +114,14 @@ | |||||
| #define CANDIDATE_MB_TYPE_DIRECT0 (1 << 12) | #define CANDIDATE_MB_TYPE_DIRECT0 (1 << 12) | ||||
| /** | |||||
| * Draw a horizontal band if supported. | |||||
| * | |||||
| * @param h is the normal height, this will be reduced automatically if needed | |||||
| */ | |||||
| void ff_draw_horiz_band(AVCodecContext *avctx, AVFrame *cur, AVFrame *last, | |||||
| int y, int h, int picture_structure, int first_field, | |||||
| int low_delay); | |||||
| #endif /* AVCODEC_PICTTYPE_H */ | #endif /* AVCODEC_PICTTYPE_H */ | ||||
| @@ -2311,59 +2311,6 @@ void ff_MPV_decode_mb(MpegEncContext *s, int16_t block[12][64]){ | |||||
| MPV_decode_mb_internal(s, block, 0); | MPV_decode_mb_internal(s, block, 0); | ||||
| } | } | ||||
| /** | |||||
| * @param h is the normal height, this will be reduced automatically if needed for the last row | |||||
| */ | |||||
| void ff_draw_horiz_band(AVCodecContext *avctx, | |||||
| AVFrame *cur, AVFrame *last, | |||||
| int y, int h, int picture_structure, | |||||
| int first_field, int low_delay) | |||||
| { | |||||
| const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); | |||||
| int vshift = desc->log2_chroma_h; | |||||
| const int field_pic = picture_structure != PICT_FRAME; | |||||
| if(field_pic){ | |||||
| h <<= 1; | |||||
| y <<= 1; | |||||
| } | |||||
| h = FFMIN(h, avctx->height - y); | |||||
| if(field_pic && first_field && !(avctx->slice_flags&SLICE_FLAG_ALLOW_FIELD)) return; | |||||
| if (avctx->draw_horiz_band) { | |||||
| AVFrame *src; | |||||
| int offset[AV_NUM_DATA_POINTERS]; | |||||
| int i; | |||||
| if (cur->pict_type == AV_PICTURE_TYPE_B || low_delay || | |||||
| (avctx->slice_flags & SLICE_FLAG_CODED_ORDER)) | |||||
| src = cur; | |||||
| else if (last) | |||||
| src = last; | |||||
| else | |||||
| return; | |||||
| if (cur->pict_type == AV_PICTURE_TYPE_B && | |||||
| picture_structure == PICT_FRAME && | |||||
| avctx->codec_id != AV_CODEC_ID_SVQ3) { | |||||
| for (i = 0; i < AV_NUM_DATA_POINTERS; i++) | |||||
| offset[i] = 0; | |||||
| }else{ | |||||
| offset[0]= y * src->linesize[0]; | |||||
| offset[1]= | |||||
| offset[2]= (y >> vshift) * src->linesize[1]; | |||||
| for (i = 3; i < AV_NUM_DATA_POINTERS; i++) | |||||
| offset[i] = 0; | |||||
| } | |||||
| emms_c(); | |||||
| avctx->draw_horiz_band(avctx, src, offset, | |||||
| y, picture_structure, h); | |||||
| } | |||||
| } | |||||
| void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h) | void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h) | ||||
| { | { | ||||
| ff_draw_horiz_band(s->avctx, &s->current_picture.f, | ff_draw_horiz_band(s->avctx, &s->current_picture.f, | ||||
| @@ -710,9 +710,6 @@ void ff_MPV_common_init_x86(MpegEncContext *s); | |||||
| void ff_MPV_common_init_arm(MpegEncContext *s); | void ff_MPV_common_init_arm(MpegEncContext *s); | ||||
| void ff_MPV_common_init_ppc(MpegEncContext *s); | void ff_MPV_common_init_ppc(MpegEncContext *s); | ||||
| void ff_clean_intra_table_entries(MpegEncContext *s); | void ff_clean_intra_table_entries(MpegEncContext *s); | ||||
| void ff_draw_horiz_band(AVCodecContext *avctx, AVFrame *cur, AVFrame *last, | |||||
| int y, int h, int picture_structure, int first_field, | |||||
| int low_delay); | |||||
| void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h); | void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h); | ||||
| void ff_mpeg_flush(AVCodecContext *avctx); | void ff_mpeg_flush(AVCodecContext *avctx); | ||||
| void ff_print_debug_info(MpegEncContext *s, Picture *p); | void ff_print_debug_info(MpegEncContext *s, Picture *p); | ||||