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

Originally committed as revision 12910 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Vladimir Voroshilov 2008-04-19 17:07:58 +00:00
parent c6cd525aa0
commit 159ef4b02a
7 changed files with 8 additions and 7 deletions

View File

@ -3100,7 +3100,7 @@ int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s){
case FF_S_TYPE:
return s->f_code+15;
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:
return -1;
}

View File

@ -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
//this is a conservative estimate: could also check beta_offset and more accurate chroma_qp
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];
if(qp <= qp_thresh
&& (mb_x == 0 || ((qp + s->current_picture.qscale_table[mb_xy-1] + 1)>>1) <= qp_thresh)

View File

@ -123,7 +123,7 @@ read_header:
*data_size = sizeof(AVFrame);
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->qscale_table= s->qscale_table;
memset(picture->qscale_table, picture->quality, (s->width+15)/16);

View File

@ -1284,7 +1284,7 @@ eoi_parser:
*data_size = sizeof(AVFrame);
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->qscale_table= s->qscale_table;
memset(picture->qscale_table, picture->quality, (s->width+15)/16);

View File

@ -2814,7 +2814,7 @@ static int encode_picture(MpegEncContext *s, int picture_number)
int a,b;
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);
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);

View File

@ -98,8 +98,8 @@ typedef struct MatroskaSubtitleTrack {
//..
} MatroskaSubtitleTrack;
#define MAX_TRACK_SIZE (FFMAX(FFMAX(sizeof(MatroskaVideoTrack), \
sizeof(MatroskaAudioTrack)), \
#define MAX_TRACK_SIZE (FFMAX3(sizeof(MatroskaVideoTrack), \
sizeof(MatroskaAudioTrack), \
sizeof(MatroskaSubtitleTrack)))
typedef struct MatroskaLevel {

View File

@ -111,6 +111,7 @@
#define FFSIGN(a) ((a) > 0 ? 1 : -1)
#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 FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)