[Ffmpeg-devel] Specifying codec restrictions
    Måns Rullgård 
    mru
       
    Sat Mar  4 14:28:15 CET 2006
    
    
  
I've been thinking about this a bit, and I've come up with an idea:
typedef struct AVCodecRestriction {
    AVRational framerate;
    PixelFormat pixfmt;
    int width;
    int height;
    int flags;
} AVCodecRestriction;
#define FRAMERATE_ALL {0,0}
#define FRAMERATE_ANY {1,0}
#define RESOLUTION_ALL 0
#define RESOLUTION_ANY -1
#define PIXELFORMAT_ALL PIX_FMT_NONE
#define PIXELFORMAT_ANY (PIX_FMT_NONE-1)
#define RESTRICTION_FLAG_WIDTH_MULTIPLE     1
#define RESTRICTION_FLAG_HEIGHT_MULTIPLE    2
#define RESTRICTION_FLAG_FRAMERATE_MULTIPLE 4
AVCodecRestriction mpeg2_restrictions[] = {
    { {24000, 1001}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {   24,    1}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {   25,    1}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {30000, 1001}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {   30,    1}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {   50,    1}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {60000, 1001}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { {   60,    1}, PIXELFORMAT_ANY, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
    { FRAMERATE_ANY, PIX_FMT_YUV420P, RESOLUTION_ALL, RESOLUTION_ALL, 0 },
};
AVCodecRestriction h263_restrictions[] = {
    { FRAME_RATE_ALL, PIX_FMT_YUV420P, 4, 4,
      RESTRICTION_FLAG_WIDTH_MULTIPLE | RESTRICTION_FLAG_HEIGHT_MULTIPLE }
};
AVCodecRestriction dv_restrictions[] = {
    { {30000, 1001}, PIX_FMT_YUV411P, 720, 480, 0 },
    { {   25,    1}, PIX_FMT_YUV420P, 720, 576, 0 },
};
Does this make any sense at all?  Some more parameters should probably
be added (SAR, audio stuff), and the constant names could be abbreviated.
Comments welcome.
-- 
M?ns Rullg?rd
mru at inprovide.com
    
    
More information about the ffmpeg-devel
mailing list