Mercurial > libavcodec.hg
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; |