comparison opt.c @ 6451:355b2eb9f553 libavcodec

Fix handling flags with the MSB set.
author michael
date Wed, 05 Mar 2008 03:59:07 +0000
parents 42a3c36e3303
children ba5913f27124
comparison
equal deleted inserted replaced
6450:c32be43b52b2 6451:355b2eb9f553
60 60
61 dst= ((uint8_t*)obj) + o->offset; 61 dst= ((uint8_t*)obj) + o->offset;
62 62
63 switch(o->type){ 63 switch(o->type){
64 case FF_OPT_TYPE_FLAGS: 64 case FF_OPT_TYPE_FLAGS:
65 case FF_OPT_TYPE_INT: *(int *)dst= lrintf(num/den)*intnum; break; 65 case FF_OPT_TYPE_INT: *(int *)dst= llrint(num/den)*intnum; break;
66 case FF_OPT_TYPE_INT64: *(int64_t *)dst= lrintf(num/den)*intnum; break; 66 case FF_OPT_TYPE_INT64: *(int64_t *)dst= llrint(num/den)*intnum; break;
67 case FF_OPT_TYPE_FLOAT: *(float *)dst= num*intnum/den; break; 67 case FF_OPT_TYPE_FLOAT: *(float *)dst= num*intnum/den; break;
68 case FF_OPT_TYPE_DOUBLE:*(double *)dst= num*intnum/den; break; 68 case FF_OPT_TYPE_DOUBLE:*(double *)dst= num*intnum/den; break;
69 case FF_OPT_TYPE_RATIONAL: 69 case FF_OPT_TYPE_RATIONAL:
70 if((int)num == num) *(AVRational*)dst= (AVRational){num*intnum, den}; 70 if((int)num == num) *(AVRational*)dst= (AVRational){num*intnum, den};
71 else *(AVRational*)dst= av_d2q(num*intnum/den, 1<<24); 71 else *(AVRational*)dst= av_d2q(num*intnum/den, 1<<24);
252 dst= ((uint8_t*)obj) + o->offset; 252 dst= ((uint8_t*)obj) + o->offset;
253 253
254 if(o_out) *o_out= o; 254 if(o_out) *o_out= o;
255 255
256 switch(o->type){ 256 switch(o->type){
257 case FF_OPT_TYPE_FLAGS: 257 case FF_OPT_TYPE_FLAGS: *intnum= *(unsigned int*)dst;return 0;
258 case FF_OPT_TYPE_INT: *intnum= *(int *)dst;return 0; 258 case FF_OPT_TYPE_INT: *intnum= *(int *)dst;return 0;
259 case FF_OPT_TYPE_INT64: *intnum= *(int64_t*)dst;return 0; 259 case FF_OPT_TYPE_INT64: *intnum= *(int64_t*)dst;return 0;
260 case FF_OPT_TYPE_FLOAT: *num= *(float *)dst;return 0; 260 case FF_OPT_TYPE_FLOAT: *num= *(float *)dst;return 0;
261 case FF_OPT_TYPE_DOUBLE: *num= *(double *)dst;return 0; 261 case FF_OPT_TYPE_DOUBLE: *num= *(double *)dst;return 0;
262 case FF_OPT_TYPE_RATIONAL: *intnum= ((AVRational*)dst)->num; 262 case FF_OPT_TYPE_RATIONAL: *intnum= ((AVRational*)dst)->num;