mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
ff_get_fourcc() & XVIX support
Originally committed as revision 975 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0c2dd16eb6
commit
202ef8b819
@ -680,7 +680,7 @@ typedef struct AVCodecContext {
|
||||
* fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A')
|
||||
* this is used to workaround some encoder bugs
|
||||
* encoding: unused
|
||||
* decoding: set by user
|
||||
* decoding: set by user, will be converted to upper case by lavc during init
|
||||
*/
|
||||
int fourcc;
|
||||
|
||||
|
@ -922,6 +922,16 @@ static inline int ff_sqrt(int a)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* converts fourcc string to int
|
||||
*/
|
||||
static inline int ff_get_fourcc(char *s){
|
||||
assert( strlen(s)==4 );
|
||||
|
||||
return (s[0]) + (s[1]<<8) + (s[2]<<16) + (s[3]<<24);
|
||||
}
|
||||
|
||||
#if __CPU__ >= 686 && !defined(RUNTIME_CPUDETECT)
|
||||
#define COPY3_IF_LT(x,y,a,b,c,d)\
|
||||
asm volatile (\
|
||||
|
@ -4231,7 +4231,7 @@ int mpeg4_decode_picture_header(MpegEncContext * s)
|
||||
s->last_time_base= s->time_base;
|
||||
s->time_base+= time_incr;
|
||||
s->time= s->time_base*s->time_increment_resolution + time_increment;
|
||||
if(s->workaround_bugs==3 || s->avctx->fourcc== 'U' + ('M'<<8) + ('P'<<16) + ('4'<<24)){
|
||||
if(s->workaround_bugs==3 || s->avctx->fourcc == ff_get_fourcc("UMP4")){
|
||||
if(s->time < s->last_non_b_time){
|
||||
// fprintf(stderr, "header is not mpeg4 compatible, broken encoder, trying to workaround\n");
|
||||
s->time_base++;
|
||||
|
@ -144,7 +144,11 @@ uint64_t time= rdtsc();
|
||||
|
||||
s->hurry_up= avctx->hurry_up;
|
||||
s->error_resilience= avctx->error_resilience;
|
||||
|
||||
s->workaround_bugs= avctx->workaround_bugs;
|
||||
if(s->avctx->fourcc == ff_get_fourcc("XVIX") && s->workaround_bugs==0)
|
||||
s->workaround_bugs=2;
|
||||
|
||||
s->flags= avctx->flags;
|
||||
|
||||
*data_size = 0;
|
||||
|
@ -18,6 +18,8 @@
|
||||
*
|
||||
* 4MV & hq & b-frame encoding stuff by Michael Niedermayer <michaelni@gmx.at>
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include "avcodec.h"
|
||||
#include "dsputil.h"
|
||||
#include "mpegvideo.h"
|
||||
@ -162,6 +164,12 @@ int MPV_common_init(MpegEncContext *s)
|
||||
/* set default edge pos, will be overriden in decode_header if needed */
|
||||
s->h_edge_pos= s->mb_width*16;
|
||||
s->v_edge_pos= s->mb_height*16;
|
||||
|
||||
/* convert fourcc to upper case */
|
||||
s->avctx->fourcc= toupper( s->avctx->fourcc &0xFF)
|
||||
+ (toupper((s->avctx->fourcc>>8 )&0xFF)<<8 )
|
||||
+ (toupper((s->avctx->fourcc>>16)&0xFF)<<16)
|
||||
+ (toupper((s->avctx->fourcc>>24)&0xFF)<<24);
|
||||
|
||||
s->mb_num = s->mb_width * s->mb_height;
|
||||
if(!(s->flags&CODEC_FLAG_DR1)){
|
||||
|
Loading…
Reference in New Issue
Block a user