mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge commit 'f593628e5868e52a46de666767896c6afcebdae4'
* commit 'f593628e5868e52a46de666767896c6afcebdae4': avconv: Replace raw picture frame swapping hack. RV40: reuse some H.264 motion compensation functions in RV40. Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
76ba894eab
8
avconv.c
8
avconv.c
@ -1148,11 +1148,10 @@ static void do_video_out(AVFormatContext *s,
|
||||
{
|
||||
int nb_frames, i, ret, format_video_sync;
|
||||
AVFrame *final_picture;
|
||||
AVCodecContext *enc, *dec;
|
||||
AVCodecContext *enc;
|
||||
double sync_ipts;
|
||||
|
||||
enc = ost->st->codec;
|
||||
dec = ist->st->codec;
|
||||
|
||||
sync_ipts = get_sync_ipts(ost) / av_q2d(enc->time_base);
|
||||
|
||||
@ -1206,15 +1205,14 @@ static void do_video_out(AVFormatContext *s,
|
||||
/* raw pictures are written as AVPicture structure to
|
||||
avoid any copies. We support temporarily the older
|
||||
method. */
|
||||
AVFrame* old_frame = enc->coded_frame;
|
||||
enc->coded_frame = dec->coded_frame; //FIXME/XXX remove this hack
|
||||
enc->coded_frame->interlaced_frame = in_picture->interlaced_frame;
|
||||
enc->coded_frame->top_field_first = in_picture->top_field_first;
|
||||
pkt.data= (uint8_t *)final_picture;
|
||||
pkt.size= sizeof(AVPicture);
|
||||
pkt.pts= av_rescale_q(ost->sync_opts, enc->time_base, ost->st->time_base);
|
||||
pkt.flags |= AV_PKT_FLAG_KEY;
|
||||
|
||||
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
|
||||
enc->coded_frame = old_frame;
|
||||
} else {
|
||||
AVFrame big_picture;
|
||||
|
||||
|
8
ffmpeg.c
8
ffmpeg.c
@ -1137,11 +1137,10 @@ static void do_video_out(AVFormatContext *s,
|
||||
{
|
||||
int nb_frames, i, ret, format_video_sync;
|
||||
AVFrame *final_picture;
|
||||
AVCodecContext *enc, *dec;
|
||||
AVCodecContext *enc;
|
||||
double sync_ipts;
|
||||
|
||||
enc = ost->st->codec;
|
||||
dec = ist->st->codec;
|
||||
|
||||
sync_ipts = get_sync_ipts(ost) / av_q2d(enc->time_base);
|
||||
|
||||
@ -1195,15 +1194,14 @@ static void do_video_out(AVFormatContext *s,
|
||||
/* raw pictures are written as AVPicture structure to
|
||||
avoid any copies. We support temporarily the older
|
||||
method. */
|
||||
AVFrame* old_frame = enc->coded_frame;
|
||||
enc->coded_frame = dec->coded_frame; //FIXME/XXX remove this hack
|
||||
enc->coded_frame->interlaced_frame = in_picture->interlaced_frame;
|
||||
enc->coded_frame->top_field_first = in_picture->top_field_first;
|
||||
pkt.data= (uint8_t *)final_picture;
|
||||
pkt.size= sizeof(AVPicture);
|
||||
pkt.pts= av_rescale_q(ost->sync_opts, enc->time_base, ost->st->time_base);
|
||||
pkt.flags |= AV_PKT_FLAG_KEY;
|
||||
|
||||
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
|
||||
enc->coded_frame = old_frame;
|
||||
} else {
|
||||
AVFrame big_picture;
|
||||
|
||||
|
@ -106,10 +106,6 @@ static void OPNAME ## rv40_qpel ## SIZE ## _mc10_c(uint8_t *dst, uint8_t *src, i
|
||||
OPNAME ## rv40_qpel ## SIZE ## _h_lowpass(dst, src, stride, stride, SIZE, 52, 20, 6);\
|
||||
}\
|
||||
\
|
||||
static void OPNAME ## rv40_qpel ## SIZE ## _mc20_c(uint8_t *dst, uint8_t *src, int stride){\
|
||||
OPNAME ## rv40_qpel ## SIZE ## _h_lowpass(dst, src, stride, stride, SIZE, 20, 20, 5);\
|
||||
}\
|
||||
\
|
||||
static void OPNAME ## rv40_qpel ## SIZE ## _mc30_c(uint8_t *dst, uint8_t *src, int stride){\
|
||||
OPNAME ## rv40_qpel ## SIZE ## _h_lowpass(dst, src, stride, stride, SIZE, 20, 52, 6);\
|
||||
}\
|
||||
@ -139,10 +135,6 @@ static void OPNAME ## rv40_qpel ## SIZE ## _mc31_c(uint8_t *dst, uint8_t *src, i
|
||||
OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, full_mid, stride, SIZE, SIZE, 52, 20, 6);\
|
||||
}\
|
||||
\
|
||||
static void OPNAME ## rv40_qpel ## SIZE ## _mc02_c(uint8_t *dst, uint8_t *src, int stride){\
|
||||
OPNAME ## rv40_qpel ## SIZE ## _v_lowpass(dst, src, stride, stride, SIZE, 20, 20, 5);\
|
||||
}\
|
||||
\
|
||||
static void OPNAME ## rv40_qpel ## SIZE ## _mc12_c(uint8_t *dst, uint8_t *src, int stride){\
|
||||
uint8_t full[SIZE*(SIZE+5)];\
|
||||
uint8_t * const full_mid = full + SIZE*2;\
|
||||
@ -305,13 +297,13 @@ RV40_WEIGHT_FUNC(8)
|
||||
av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) {
|
||||
c->put_pixels_tab[0][ 0] = dsp->put_h264_qpel_pixels_tab[0][0];
|
||||
c->put_pixels_tab[0][ 1] = put_rv40_qpel16_mc10_c;
|
||||
c->put_pixels_tab[0][ 2] = put_rv40_qpel16_mc20_c;
|
||||
c->put_pixels_tab[0][ 2] = dsp->put_h264_qpel_pixels_tab[0][2];
|
||||
c->put_pixels_tab[0][ 3] = put_rv40_qpel16_mc30_c;
|
||||
c->put_pixels_tab[0][ 4] = put_rv40_qpel16_mc01_c;
|
||||
c->put_pixels_tab[0][ 5] = put_rv40_qpel16_mc11_c;
|
||||
c->put_pixels_tab[0][ 6] = put_rv40_qpel16_mc21_c;
|
||||
c->put_pixels_tab[0][ 7] = put_rv40_qpel16_mc31_c;
|
||||
c->put_pixels_tab[0][ 8] = put_rv40_qpel16_mc02_c;
|
||||
c->put_pixels_tab[0][ 8] = dsp->put_h264_qpel_pixels_tab[0][8];
|
||||
c->put_pixels_tab[0][ 9] = put_rv40_qpel16_mc12_c;
|
||||
c->put_pixels_tab[0][10] = put_rv40_qpel16_mc22_c;
|
||||
c->put_pixels_tab[0][11] = put_rv40_qpel16_mc32_c;
|
||||
@ -321,13 +313,13 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) {
|
||||
c->put_pixels_tab[0][15] = ff_put_rv40_qpel16_mc33_c;
|
||||
c->avg_pixels_tab[0][ 0] = dsp->avg_h264_qpel_pixels_tab[0][0];
|
||||
c->avg_pixels_tab[0][ 1] = avg_rv40_qpel16_mc10_c;
|
||||
c->avg_pixels_tab[0][ 2] = avg_rv40_qpel16_mc20_c;
|
||||
c->avg_pixels_tab[0][ 2] = dsp->avg_h264_qpel_pixels_tab[0][2];
|
||||
c->avg_pixels_tab[0][ 3] = avg_rv40_qpel16_mc30_c;
|
||||
c->avg_pixels_tab[0][ 4] = avg_rv40_qpel16_mc01_c;
|
||||
c->avg_pixels_tab[0][ 5] = avg_rv40_qpel16_mc11_c;
|
||||
c->avg_pixels_tab[0][ 6] = avg_rv40_qpel16_mc21_c;
|
||||
c->avg_pixels_tab[0][ 7] = avg_rv40_qpel16_mc31_c;
|
||||
c->avg_pixels_tab[0][ 8] = avg_rv40_qpel16_mc02_c;
|
||||
c->avg_pixels_tab[0][ 8] = dsp->avg_h264_qpel_pixels_tab[0][8];
|
||||
c->avg_pixels_tab[0][ 9] = avg_rv40_qpel16_mc12_c;
|
||||
c->avg_pixels_tab[0][10] = avg_rv40_qpel16_mc22_c;
|
||||
c->avg_pixels_tab[0][11] = avg_rv40_qpel16_mc32_c;
|
||||
@ -337,13 +329,13 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) {
|
||||
c->avg_pixels_tab[0][15] = ff_avg_rv40_qpel16_mc33_c;
|
||||
c->put_pixels_tab[1][ 0] = dsp->put_h264_qpel_pixels_tab[1][0];
|
||||
c->put_pixels_tab[1][ 1] = put_rv40_qpel8_mc10_c;
|
||||
c->put_pixels_tab[1][ 2] = put_rv40_qpel8_mc20_c;
|
||||
c->put_pixels_tab[1][ 2] = dsp->put_h264_qpel_pixels_tab[1][2];
|
||||
c->put_pixels_tab[1][ 3] = put_rv40_qpel8_mc30_c;
|
||||
c->put_pixels_tab[1][ 4] = put_rv40_qpel8_mc01_c;
|
||||
c->put_pixels_tab[1][ 5] = put_rv40_qpel8_mc11_c;
|
||||
c->put_pixels_tab[1][ 6] = put_rv40_qpel8_mc21_c;
|
||||
c->put_pixels_tab[1][ 7] = put_rv40_qpel8_mc31_c;
|
||||
c->put_pixels_tab[1][ 8] = put_rv40_qpel8_mc02_c;
|
||||
c->put_pixels_tab[1][ 8] = dsp->put_h264_qpel_pixels_tab[1][8];
|
||||
c->put_pixels_tab[1][ 9] = put_rv40_qpel8_mc12_c;
|
||||
c->put_pixels_tab[1][10] = put_rv40_qpel8_mc22_c;
|
||||
c->put_pixels_tab[1][11] = put_rv40_qpel8_mc32_c;
|
||||
@ -353,13 +345,13 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) {
|
||||
c->put_pixels_tab[1][15] = ff_put_rv40_qpel8_mc33_c;
|
||||
c->avg_pixels_tab[1][ 0] = dsp->avg_h264_qpel_pixels_tab[1][0];
|
||||
c->avg_pixels_tab[1][ 1] = avg_rv40_qpel8_mc10_c;
|
||||
c->avg_pixels_tab[1][ 2] = avg_rv40_qpel8_mc20_c;
|
||||
c->avg_pixels_tab[1][ 2] = dsp->avg_h264_qpel_pixels_tab[1][2];
|
||||
c->avg_pixels_tab[1][ 3] = avg_rv40_qpel8_mc30_c;
|
||||
c->avg_pixels_tab[1][ 4] = avg_rv40_qpel8_mc01_c;
|
||||
c->avg_pixels_tab[1][ 5] = avg_rv40_qpel8_mc11_c;
|
||||
c->avg_pixels_tab[1][ 6] = avg_rv40_qpel8_mc21_c;
|
||||
c->avg_pixels_tab[1][ 7] = avg_rv40_qpel8_mc31_c;
|
||||
c->avg_pixels_tab[1][ 8] = avg_rv40_qpel8_mc02_c;
|
||||
c->avg_pixels_tab[1][ 8] = dsp->avg_h264_qpel_pixels_tab[1][8];
|
||||
c->avg_pixels_tab[1][ 9] = avg_rv40_qpel8_mc12_c;
|
||||
c->avg_pixels_tab[1][10] = avg_rv40_qpel8_mc22_c;
|
||||
c->avg_pixels_tab[1][11] = avg_rv40_qpel8_mc32_c;
|
||||
|
Loading…
Reference in New Issue
Block a user