1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-24 13:56:33 +02:00

Merge remote-tracking branch 'qatar/master'

* qatar/master:
  lavc: Deprecate the deinterlace functions in libavcodec
  h264: Integrate draw_horiz_band into ff_h264_draw_horiz_band

Conflicts:
	configure
	ffmpeg_opt.c
	libavcodec/avcodec.h
	libavcodec/h264.c
	libavcodec/imgconvert.c
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-03-07 11:50:17 +01:00
commit 8cc5481d51
4 changed files with 23 additions and 23 deletions

View File

@ -681,6 +681,7 @@ static void do_audio_out(AVFormatContext *s, OutputStream *ost,
}
}
#if FF_API_DEINTERLACE
static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void **bufp)
{
AVCodecContext *dec;
@ -721,6 +722,7 @@ static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void *
*picture = *picture2;
*bufp = buf;
}
#endif
static void do_subtitle_out(AVFormatContext *s,
OutputStream *ost,
@ -1675,7 +1677,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
}
pkt->size = 0;
#if FF_API_DEINTERLACE
pre_process_video_frame(ist, (AVPicture *)decoded_frame, &buffer_to_free);
#endif
rate_emu_sleep(ist);

View File

@ -4616,14 +4616,16 @@ int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt,
*/
int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
#if FF_API_DEINTERLACE
/**
* deinterlace - if not supported return -1
*
* @deprecated - use yadif (in lavfilter) instead
* @deprecated - use yadif (in libavfilter) instead
*/
attribute_deprecated
int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
enum AVPixelFormat pix_fmt, int width, int height);
#endif
/**
* Copy image src to dst. Wraps av_image_copy().
*/

View File

@ -143,28 +143,30 @@ static void h264_er_decode_mb(void *opaque, int ref, int mv_dir, int mv_type,
ff_h264_hl_decode_mb(h);
}
static void draw_horiz_band(AVCodecContext *avctx, Picture *cur,
Picture *last, int y, int h, int picture_structure,
int first_field, int low_delay)
void ff_h264_draw_horiz_band(H264Context *h, int y, int height)
{
AVCodecContext *avctx = h->avctx;
Picture *cur = &h->cur_pic;
Picture *last = h->ref_list[0][0].f.data[0] ? &h->ref_list[0][0] : NULL;
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;
const int field_pic = h->picture_structure != PICT_FRAME;
if (field_pic) {
height <<= 1;
y <<= 1;
}
h = FFMIN(h, avctx->height - y);
height = FFMIN(height, avctx->height - y);
if(field_pic && first_field && !(avctx->slice_flags&SLICE_FLAG_ALLOW_FIELD)) return;
if (field_pic && h->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->f.pict_type == AV_PICTURE_TYPE_B || low_delay ||
if (cur->f.pict_type == AV_PICTURE_TYPE_B || h->low_delay ||
(avctx->slice_flags & SLICE_FLAG_CODED_ORDER))
src = &cur->f;
else if (last)
@ -172,27 +174,19 @@ static void draw_horiz_band(AVCodecContext *avctx, Picture *cur,
else
return;
offset[0]= y * src->linesize[0];
offset[1]=
offset[2]= (y >> vshift) * src->linesize[1];
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);
y, h->picture_structure, height);
}
}
void ff_h264_draw_horiz_band(H264Context *h, int y, int height)
{
draw_horiz_band(h->avctx, &h->cur_pic,
h->ref_list[0][0].f.data[0] ? &h->ref_list[0][0] : NULL,
y, height, h->picture_structure, h->first_field,
h->low_delay);
}
static void free_frame_buffer(H264Context *h, Picture *pic)
{
pic->period_since_free = 0;

View File

@ -107,7 +107,7 @@
#define FF_API_IDCT (LIBAVCODEC_VERSION_MAJOR < 55)
#endif
#ifndef FF_API_DEINTERLACE
#define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 55)
#define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 56)
#endif
#endif /* AVCODEC_VERSION_H */