Commit 159ef4b0 authored by Vladimir Voroshilov's avatar Vladimir Voroshilov

Implement FFMAX3(a,b,c) - maximum over three arguments.

Originally committed as revision 12910 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent c6cd525a
...@@ -3100,7 +3100,7 @@ int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s){ ...@@ -3100,7 +3100,7 @@ int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s){
case FF_S_TYPE: case FF_S_TYPE:
return s->f_code+15; return s->f_code+15;
case FF_B_TYPE: case FF_B_TYPE:
return FFMAX(FFMAX(s->f_code, s->b_code)+15, 17); return FFMAX3(s->f_code, s->b_code, 2) + 15;
default: default:
return -1; return -1;
} }
......
...@@ -6502,7 +6502,7 @@ static void filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8 ...@@ -6502,7 +6502,7 @@ static void filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8
//for sufficiently low qp, filtering wouldn't do anything //for sufficiently low qp, filtering wouldn't do anything
//this is a conservative estimate: could also check beta_offset and more accurate chroma_qp //this is a conservative estimate: could also check beta_offset and more accurate chroma_qp
if(!FRAME_MBAFF){ if(!FRAME_MBAFF){
int qp_thresh = 15 - h->slice_alpha_c0_offset - FFMAX(0, FFMAX(h->pps.chroma_qp_index_offset[0], h->pps.chroma_qp_index_offset[1])); int qp_thresh = 15 - h->slice_alpha_c0_offset - FFMAX3(0, h->pps.chroma_qp_index_offset[0], h->pps.chroma_qp_index_offset[1]);
int qp = s->current_picture.qscale_table[mb_xy]; int qp = s->current_picture.qscale_table[mb_xy];
if(qp <= qp_thresh if(qp <= qp_thresh
&& (mb_x == 0 || ((qp + s->current_picture.qscale_table[mb_xy-1] + 1)>>1) <= qp_thresh) && (mb_x == 0 || ((qp + s->current_picture.qscale_table[mb_xy-1] + 1)>>1) <= qp_thresh)
......
...@@ -123,7 +123,7 @@ read_header: ...@@ -123,7 +123,7 @@ read_header:
*data_size = sizeof(AVFrame); *data_size = sizeof(AVFrame);
if(!s->lossless){ if(!s->lossless){
picture->quality= FFMAX(FFMAX(s->qscale[0], s->qscale[1]), s->qscale[2]); picture->quality= FFMAX3(s->qscale[0], s->qscale[1], s->qscale[2]);
picture->qstride= 0; picture->qstride= 0;
picture->qscale_table= s->qscale_table; picture->qscale_table= s->qscale_table;
memset(picture->qscale_table, picture->quality, (s->width+15)/16); memset(picture->qscale_table, picture->quality, (s->width+15)/16);
......
...@@ -1284,7 +1284,7 @@ eoi_parser: ...@@ -1284,7 +1284,7 @@ eoi_parser:
*data_size = sizeof(AVFrame); *data_size = sizeof(AVFrame);
if(!s->lossless){ if(!s->lossless){
picture->quality= FFMAX(FFMAX(s->qscale[0], s->qscale[1]), s->qscale[2]); picture->quality= FFMAX3(s->qscale[0], s->qscale[1], s->qscale[2]);
picture->qstride= 0; picture->qstride= 0;
picture->qscale_table= s->qscale_table; picture->qscale_table= s->qscale_table;
memset(picture->qscale_table, picture->quality, (s->width+15)/16); memset(picture->qscale_table, picture->quality, (s->width+15)/16);
......
...@@ -2814,7 +2814,7 @@ static int encode_picture(MpegEncContext *s, int picture_number) ...@@ -2814,7 +2814,7 @@ static int encode_picture(MpegEncContext *s, int picture_number)
int a,b; int a,b;
a= ff_get_best_fcode(s, s->p_field_mv_table[0][0], CANDIDATE_MB_TYPE_INTER_I); //FIXME field_select a= ff_get_best_fcode(s, s->p_field_mv_table[0][0], CANDIDATE_MB_TYPE_INTER_I); //FIXME field_select
b= ff_get_best_fcode(s, s->p_field_mv_table[1][1], CANDIDATE_MB_TYPE_INTER_I); b= ff_get_best_fcode(s, s->p_field_mv_table[1][1], CANDIDATE_MB_TYPE_INTER_I);
s->f_code= FFMAX(s->f_code, FFMAX(a,b)); s->f_code= FFMAX3(s->f_code, a, b);
} }
ff_fix_long_p_mvs(s); ff_fix_long_p_mvs(s);
......
...@@ -98,8 +98,8 @@ typedef struct MatroskaSubtitleTrack { ...@@ -98,8 +98,8 @@ typedef struct MatroskaSubtitleTrack {
//.. //..
} MatroskaSubtitleTrack; } MatroskaSubtitleTrack;
#define MAX_TRACK_SIZE (FFMAX(FFMAX(sizeof(MatroskaVideoTrack), \ #define MAX_TRACK_SIZE (FFMAX3(sizeof(MatroskaVideoTrack), \
sizeof(MatroskaAudioTrack)), \ sizeof(MatroskaAudioTrack), \
sizeof(MatroskaSubtitleTrack))) sizeof(MatroskaSubtitleTrack)))
typedef struct MatroskaLevel { typedef struct MatroskaLevel {
......
...@@ -111,6 +111,7 @@ ...@@ -111,6 +111,7 @@
#define FFSIGN(a) ((a) > 0 ? 1 : -1) #define FFSIGN(a) ((a) > 0 ? 1 : -1)
#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) #define FFMAX(a,b) ((a) > (b) ? (a) : (b))
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) #define FFMIN(a,b) ((a) > (b) ? (b) : (a))
#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) #define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment