mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
allocate 32 extra bytes at the end of the probe buffer and remove most probe buf_size checks
Originally committed as revision 8677 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f118d254be
commit
87e8788680
@ -79,9 +79,6 @@ typedef struct FourxmDemuxContext {
|
|||||||
|
|
||||||
static int fourxm_probe(AVProbeData *p)
|
static int fourxm_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 12)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if ((AV_RL32(&p->buf[0]) != RIFF_TAG) ||
|
if ((AV_RL32(&p->buf[0]) != RIFF_TAG) ||
|
||||||
(AV_RL32(&p->buf[8]) != _4XMV_TAG))
|
(AV_RL32(&p->buf[8]) != _4XMV_TAG))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -275,8 +275,6 @@ static int aiff_write_trailer(AVFormatContext *s)
|
|||||||
static int aiff_probe(AVProbeData *p)
|
static int aiff_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size < 16)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'F' && p->buf[1] == 'O' &&
|
if (p->buf[0] == 'F' && p->buf[1] == 'O' &&
|
||||||
p->buf[2] == 'R' && p->buf[3] == 'M' &&
|
p->buf[2] == 'R' && p->buf[3] == 'M' &&
|
||||||
p->buf[8] == 'A' && p->buf[9] == 'I' &&
|
p->buf[8] == 'A' && p->buf[9] == 'I' &&
|
||||||
|
@ -73,8 +73,6 @@ static int amr_probe(AVProbeData *p)
|
|||||||
//This will also trigger multichannel files: "#!AMR_MC1.0\n" and
|
//This will also trigger multichannel files: "#!AMR_MC1.0\n" and
|
||||||
//"#!AMR-WB_MC1.0\n" (not supported)
|
//"#!AMR-WB_MC1.0\n" (not supported)
|
||||||
|
|
||||||
if (p->buf_size < 5)
|
|
||||||
return 0;
|
|
||||||
if(memcmp(p->buf,AMR_header,5)==0)
|
if(memcmp(p->buf,AMR_header,5)==0)
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
else
|
else
|
||||||
|
@ -24,9 +24,6 @@
|
|||||||
|
|
||||||
static int apc_probe(AVProbeData *p)
|
static int apc_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 8)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!strncmp(p->buf, "CRYO_APC", 8))
|
if (!strncmp(p->buf, "CRYO_APC", 8))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
|
||||||
|
@ -119,9 +119,6 @@ static void get_str16_nolen(ByteIOContext *pb, int len, char *buf, int buf_size)
|
|||||||
static int asf_probe(AVProbeData *pd)
|
static int asf_probe(AVProbeData *pd)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (pd->buf_size <= 32)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!memcmp(pd->buf, &asf_header, sizeof(GUID)))
|
if (!memcmp(pd->buf, &asf_header, sizeof(GUID)))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
else
|
else
|
||||||
|
@ -103,8 +103,6 @@ static int au_write_trailer(AVFormatContext *s)
|
|||||||
static int au_probe(AVProbeData *p)
|
static int au_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 24)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == '.' && p->buf[1] == 's' &&
|
if (p->buf[0] == '.' && p->buf[1] == 's' &&
|
||||||
p->buf[2] == 'n' && p->buf[3] == 'd')
|
p->buf[2] == 'n' && p->buf[3] == 'd')
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT ((51<<16)+(11<<8)+0)
|
#define LIBAVFORMAT_VERSION_INT ((51<<16)+(12<<8)+0)
|
||||||
#define LIBAVFORMAT_VERSION 51.11.0
|
#define LIBAVFORMAT_VERSION 51.12.0
|
||||||
#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
|
#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
|
||||||
|
|
||||||
#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
|
#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
|
||||||
@ -132,6 +132,7 @@ typedef struct AVProbeData {
|
|||||||
} AVProbeData;
|
} AVProbeData;
|
||||||
|
|
||||||
#define AVPROBE_SCORE_MAX 100 ///< max score, half of that is used for file extension based detection
|
#define AVPROBE_SCORE_MAX 100 ///< max score, half of that is used for file extension based detection
|
||||||
|
#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer
|
||||||
|
|
||||||
typedef struct AVFormatParameters {
|
typedef struct AVFormatParameters {
|
||||||
AVRational time_base;
|
AVRational time_base;
|
||||||
|
@ -995,8 +995,6 @@ static int avi_read_close(AVFormatContext *s)
|
|||||||
static int avi_probe(AVProbeData *p)
|
static int avi_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 32)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'R' && p->buf[1] == 'I' &&
|
if (p->buf[0] == 'R' && p->buf[1] == 'I' &&
|
||||||
p->buf[2] == 'F' && p->buf[3] == 'F' &&
|
p->buf[2] == 'F' && p->buf[3] == 'F' &&
|
||||||
p->buf[8] == 'A' && p->buf[9] == 'V' &&
|
p->buf[8] == 'A' && p->buf[9] == 'V' &&
|
||||||
|
@ -47,8 +47,6 @@ static int avs_probe(AVProbeData * p)
|
|||||||
{
|
{
|
||||||
const uint8_t *d;
|
const uint8_t *d;
|
||||||
|
|
||||||
if (p->buf_size < 2)
|
|
||||||
return 0;
|
|
||||||
d = p->buf;
|
d = p->buf;
|
||||||
if (d[0] == 'w' && d[1] == 'W' && d[2] == 0x10 && d[3] == 0)
|
if (d[0] == 'w' && d[1] == 'W' && d[2] == 0x10 && d[3] == 0)
|
||||||
return 50;
|
return 50;
|
||||||
|
@ -49,7 +49,7 @@ typedef struct BVID_DemuxContext
|
|||||||
static int vid_probe(AVProbeData *p)
|
static int vid_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
// little endian VID tag, file starts with "VID\0"
|
// little endian VID tag, file starts with "VID\0"
|
||||||
if (p->buf_size < 4 || AV_RL32(p->buf) != MKTAG('V', 'I', 'D', 0))
|
if (AV_RL32(p->buf) != MKTAG('V', 'I', 'D', 0))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -44,9 +44,6 @@ typedef struct {
|
|||||||
|
|
||||||
static int probe(AVProbeData *p)
|
static int probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 13)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (p->buf[0] == 0x01 && p->buf[1] == 0x00 &&
|
if (p->buf[0] == 0x01 && p->buf[1] == 0x00 &&
|
||||||
p->buf[4] == 0x01 + p->buf[2] &&
|
p->buf[4] == 0x01 + p->buf[2] &&
|
||||||
p->buf[8] == p->buf[4] + p->buf[6] &&
|
p->buf[8] == p->buf[4] + p->buf[6] &&
|
||||||
|
@ -58,9 +58,6 @@ typedef struct CinDemuxContext {
|
|||||||
|
|
||||||
static int cin_probe(AVProbeData *p)
|
static int cin_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 18)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* header starts with this special marker */
|
/* header starts with this special marker */
|
||||||
if (AV_RL32(&p->buf[0]) != 0x55AA0000)
|
if (AV_RL32(&p->buf[0]) != 0x55AA0000)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -36,8 +36,6 @@ typedef struct{
|
|||||||
static int dxa_probe(AVProbeData *p)
|
static int dxa_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 4)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'D' && p->buf[1] == 'E' &&
|
if (p->buf[0] == 'D' && p->buf[1] == 'E' &&
|
||||||
p->buf[2] == 'X' && p->buf[3] == 'A')
|
p->buf[2] == 'X' && p->buf[3] == 'A')
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -165,9 +165,6 @@ static int process_ea_header(AVFormatContext *s) {
|
|||||||
|
|
||||||
static int ea_probe(AVProbeData *p)
|
static int ea_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 4)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AV_RL32(&p->buf[0]) != SCHl_TAG)
|
if (AV_RL32(&p->buf[0]) != SCHl_TAG)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -758,7 +758,7 @@ static int ffm_read_close(AVFormatContext *s)
|
|||||||
|
|
||||||
static int ffm_probe(AVProbeData *p)
|
static int ffm_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size >= 4 &&
|
if (
|
||||||
p->buf[0] == 'F' && p->buf[1] == 'F' && p->buf[2] == 'M' &&
|
p->buf[0] == 'F' && p->buf[1] == 'F' && p->buf[2] == 'M' &&
|
||||||
p->buf[3] == '1')
|
p->buf[3] == '1')
|
||||||
return AVPROBE_SCORE_MAX + 1;
|
return AVPROBE_SCORE_MAX + 1;
|
||||||
|
@ -55,9 +55,6 @@ static int flic_probe(AVProbeData *p)
|
|||||||
{
|
{
|
||||||
int magic_number;
|
int magic_number;
|
||||||
|
|
||||||
if (p->buf_size < 6)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
magic_number = AV_RL16(&p->buf[4]);
|
magic_number = AV_RL16(&p->buf[4]);
|
||||||
if ((magic_number != FLIC_FILE_MAGIC_1) &&
|
if ((magic_number != FLIC_FILE_MAGIC_1) &&
|
||||||
(magic_number != FLIC_FILE_MAGIC_2) &&
|
(magic_number != FLIC_FILE_MAGIC_2) &&
|
||||||
|
@ -31,8 +31,6 @@ static int flv_probe(AVProbeData *p)
|
|||||||
{
|
{
|
||||||
const uint8_t *d;
|
const uint8_t *d;
|
||||||
|
|
||||||
if (p->buf_size < 6)
|
|
||||||
return 0;
|
|
||||||
d = p->buf;
|
d = p->buf;
|
||||||
if (d[0] == 'F' && d[1] == 'L' && d[2] == 'V' && d[3] < 5 && d[5]==0) {
|
if (d[0] == 'F' && d[1] == 'L' && d[2] == 'V' && d[3] < 5 && d[5]==0) {
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -87,8 +87,6 @@ static int parse_packet_header(ByteIOContext *pb, pkt_type_t *type, int *length)
|
|||||||
static int gxf_probe(AVProbeData *p) {
|
static int gxf_probe(AVProbeData *p) {
|
||||||
static const uint8_t startcode[] = {0, 0, 0, 0, 1, 0xbc}; // start with map packet
|
static const uint8_t startcode[] = {0, 0, 0, 0, 1, 0xbc}; // start with map packet
|
||||||
static const uint8_t endcode[] = {0, 0, 0, 0, 0xe1, 0xe2};
|
static const uint8_t endcode[] = {0, 0, 0, 0, 0xe1, 0xe2};
|
||||||
if (p->buf_size < 16)
|
|
||||||
return 0;
|
|
||||||
if (!memcmp(p->buf, startcode, sizeof(startcode)) &&
|
if (!memcmp(p->buf, startcode, sizeof(startcode)) &&
|
||||||
!memcmp(&p->buf[16 - sizeof(endcode)], endcode, sizeof(endcode)))
|
!memcmp(&p->buf[16 - sizeof(endcode)], endcode, sizeof(endcode)))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -104,10 +104,6 @@ static int idcin_probe(AVProbeData *p)
|
|||||||
* audio channels: 0 for no audio, or 1 or 2
|
* audio channels: 0 for no audio, or 1 or 2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* cannot proceed without 20 bytes */
|
|
||||||
if (p->buf_size < 20)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* check the video width */
|
/* check the video width */
|
||||||
number = AV_RL32(&p->buf[0]);
|
number = AV_RL32(&p->buf[0]);
|
||||||
if ((number == 0) || (number > 1024))
|
if ((number == 0) || (number > 1024))
|
||||||
|
@ -58,9 +58,6 @@ typedef struct RoqDemuxContext {
|
|||||||
|
|
||||||
static int roq_probe(AVProbeData *p)
|
static int roq_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 6)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if ((AV_RL16(&p->buf[0]) != RoQ_MAGIC_NUMBER) ||
|
if ((AV_RL16(&p->buf[0]) != RoQ_MAGIC_NUMBER) ||
|
||||||
(AV_RL32(&p->buf[2]) != 0xFFFFFFFF))
|
(AV_RL32(&p->buf[2]) != 0xFFFFFFFF))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -507,8 +507,6 @@ static int process_ipmovie_chunk(IPMVEContext *s, ByteIOContext *pb,
|
|||||||
|
|
||||||
static int ipmovie_probe(AVProbeData *p)
|
static int ipmovie_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < IPMOVIE_SIGNATURE_SIZE)
|
|
||||||
return 0;
|
|
||||||
if (strncmp(p->buf, IPMOVIE_SIGNATURE, IPMOVIE_SIGNATURE_SIZE) != 0)
|
if (strncmp(p->buf, IPMOVIE_SIGNATURE, IPMOVIE_SIGNATURE_SIZE) != 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ AVOutputFormat libnut_muxer = {
|
|||||||
#endif //CONFIG_MUXERS
|
#endif //CONFIG_MUXERS
|
||||||
|
|
||||||
static int nut_probe(AVProbeData *p) {
|
static int nut_probe(AVProbeData *p) {
|
||||||
if (p->buf_size >= ID_LENGTH && !memcmp(p->buf, ID_STRING, ID_LENGTH)) return AVPROBE_SCORE_MAX;
|
if (!memcmp(p->buf, ID_STRING, ID_LENGTH)) return AVPROBE_SCORE_MAX;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1074,9 +1074,6 @@ matroska_probe (AVProbeData *p)
|
|||||||
int len_mask = 0x80, size = 1, n = 1;
|
int len_mask = 0x80, size = 1, n = 1;
|
||||||
uint8_t probe_data[] = { 'm', 'a', 't', 'r', 'o', 's', 'k', 'a' };
|
uint8_t probe_data[] = { 'm', 'a', 't', 'r', 'o', 's', 'k', 'a' };
|
||||||
|
|
||||||
if (p->buf_size < 5)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* ebml header? */
|
/* ebml header? */
|
||||||
if ((p->buf[0] << 24 | p->buf[1] << 16 |
|
if ((p->buf[0] << 24 | p->buf[1] << 16 |
|
||||||
p->buf[2] << 8 | p->buf[3]) != EBML_ID_HEADER)
|
p->buf[2] << 8 | p->buf[3]) != EBML_ID_HEADER)
|
||||||
|
@ -59,8 +59,6 @@ typedef struct {
|
|||||||
static int mm_probe(AVProbeData *p)
|
static int mm_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* the first chunk is always the header */
|
/* the first chunk is always the header */
|
||||||
if (p->buf_size < MM_PREAMBLE_SIZE)
|
|
||||||
return 0;
|
|
||||||
if (AV_RL16(&p->buf[0]) != MM_TYPE_HEADER)
|
if (AV_RL16(&p->buf[0]) != MM_TYPE_HEADER)
|
||||||
return 0;
|
return 0;
|
||||||
if (AV_RL32(&p->buf[2]) != MM_HEADER_LEN_V && AV_RL32(&p->buf[2]) != MM_HEADER_LEN_AV)
|
if (AV_RL32(&p->buf[2]) != MM_HEADER_LEN_V && AV_RL32(&p->buf[2]) != MM_HEADER_LEN_AV)
|
||||||
|
@ -168,8 +168,6 @@ static int mmf_write_trailer(AVFormatContext *s)
|
|||||||
static int mmf_probe(AVProbeData *p)
|
static int mmf_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 32)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'M' && p->buf[1] == 'M' &&
|
if (p->buf[0] == 'M' && p->buf[1] == 'M' &&
|
||||||
p->buf[2] == 'M' && p->buf[3] == 'D' &&
|
p->buf[2] == 'M' && p->buf[3] == 'D' &&
|
||||||
p->buf[8] == 'C' && p->buf[9] == 'N' &&
|
p->buf[8] == 'C' && p->buf[9] == 'N' &&
|
||||||
|
@ -1320,8 +1320,6 @@ static int mov_probe(AVProbeData *p)
|
|||||||
int score = 0;
|
int score = 0;
|
||||||
|
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 12)
|
|
||||||
return 0;
|
|
||||||
offset = 0;
|
offset = 0;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
/* ignore invalid offset */
|
/* ignore invalid offset */
|
||||||
|
@ -252,9 +252,6 @@ static int mp3_read_probe(AVProbeData *p)
|
|||||||
uint8_t *buf, *buf2, *end;
|
uint8_t *buf, *buf2, *end;
|
||||||
AVCodecContext avctx;
|
AVCodecContext avctx;
|
||||||
|
|
||||||
if(p->buf_size < ID3_HEADER_SIZE)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if(id3_match(p->buf))
|
if(id3_match(p->buf))
|
||||||
return AVPROBE_SCORE_MAX/2+1; // this must be less then mpeg-ps because some retards put id3 tage before mpeg-ps files
|
return AVPROBE_SCORE_MAX/2+1; // this must be less then mpeg-ps because some retards put id3 tage before mpeg-ps files
|
||||||
|
|
||||||
|
@ -42,8 +42,6 @@ typedef struct {
|
|||||||
static int mpc_probe(AVProbeData *p)
|
static int mpc_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
const uint8_t *d = p->buf;
|
const uint8_t *d = p->buf;
|
||||||
if (p->buf_size < 32)
|
|
||||||
return 0;
|
|
||||||
if (d[0] == 'M' && d[1] == 'P' && d[2] == '+' && (d[3] == 0x17 || d[3] == 0x7))
|
if (d[0] == 'M' && d[1] == 'P' && d[2] == '+' && (d[3] == 0x17 || d[3] == 0x7))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
if (d[0] == 'I' && d[1] == 'D' && d[2] == '3')
|
if (d[0] == 'I' && d[1] == 'D' && d[2] == '3')
|
||||||
|
@ -1260,8 +1260,6 @@ static int mpeg_mux_end(AVFormatContext *ctx)
|
|||||||
static int cdxa_probe(AVProbeData *p)
|
static int cdxa_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 32)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'R' && p->buf[1] == 'I' &&
|
if (p->buf[0] == 'R' && p->buf[1] == 'I' &&
|
||||||
p->buf[2] == 'F' && p->buf[3] == 'F' &&
|
p->buf[2] == 'F' && p->buf[3] == 'F' &&
|
||||||
p->buf[8] == 'C' && p->buf[9] == 'D' &&
|
p->buf[8] == 'C' && p->buf[9] == 'D' &&
|
||||||
|
@ -54,9 +54,6 @@ typedef struct MTVDemuxContext {
|
|||||||
|
|
||||||
static int mtv_probe(AVProbeData *p)
|
static int mtv_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if(p->buf_size < 3)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Magic is 'AMV' */
|
/* Magic is 'AMV' */
|
||||||
|
|
||||||
if(*(p->buf) != 'A' || *(p->buf+1) != 'M' || *(p->buf+2) != 'V')
|
if(*(p->buf) != 'A' || *(p->buf+1) != 'M' || *(p->buf+2) != 'V')
|
||||||
|
@ -728,8 +728,6 @@ static int nsv_probe(AVProbeData *p)
|
|||||||
int i;
|
int i;
|
||||||
// PRINT(("nsv_probe(), buf_size %d\n", p->buf_size));
|
// PRINT(("nsv_probe(), buf_size %d\n", p->buf_size));
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 32)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'N' && p->buf[1] == 'S' &&
|
if (p->buf[0] == 'N' && p->buf[1] == 'S' &&
|
||||||
p->buf[2] == 'V' && p->buf[3] == 'f')
|
p->buf[2] == 'V' && p->buf[3] == 'f')
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -35,8 +35,6 @@ typedef enum {
|
|||||||
} frametype_t;
|
} frametype_t;
|
||||||
|
|
||||||
static int nuv_probe(AVProbeData *p) {
|
static int nuv_probe(AVProbeData *p) {
|
||||||
if (p->buf_size < 12)
|
|
||||||
return 0;
|
|
||||||
if (!memcmp(p->buf, "NuppelVideo", 12))
|
if (!memcmp(p->buf, "NuppelVideo", 12))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
if (!memcmp(p->buf, "MythTVVideo", 12))
|
if (!memcmp(p->buf, "MythTVVideo", 12))
|
||||||
|
@ -676,8 +676,6 @@ ogg_read_timestamp (AVFormatContext * s, int stream_index, int64_t * pos_arg,
|
|||||||
|
|
||||||
static int ogg_probe(AVProbeData *p)
|
static int ogg_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 6)
|
|
||||||
return 0;
|
|
||||||
if (p->buf[0] == 'O' && p->buf[1] == 'g' &&
|
if (p->buf[0] == 'O' && p->buf[1] == 'g' &&
|
||||||
p->buf[2] == 'g' && p->buf[3] == 'S' &&
|
p->buf[2] == 'g' && p->buf[3] == 'S' &&
|
||||||
p->buf[4] == 0x0 && p->buf[5] <= 0x7 )
|
p->buf[4] == 0x0 && p->buf[5] <= 0x7 )
|
||||||
|
@ -382,8 +382,6 @@ static int h263_probe(AVProbeData *p)
|
|||||||
int code;
|
int code;
|
||||||
const uint8_t *d;
|
const uint8_t *d;
|
||||||
|
|
||||||
if (p->buf_size < 6)
|
|
||||||
return 0;
|
|
||||||
d = p->buf;
|
d = p->buf;
|
||||||
code = (d[0] << 14) | (d[1] << 6) | (d[2] >> 2);
|
code = (d[0] << 14) | (d[1] << 6) | (d[2] >> 2);
|
||||||
if (code == 0x20) {
|
if (code == 0x20) {
|
||||||
@ -397,8 +395,6 @@ static int h261_probe(AVProbeData *p)
|
|||||||
int code;
|
int code;
|
||||||
const uint8_t *d;
|
const uint8_t *d;
|
||||||
|
|
||||||
if (p->buf_size < 6)
|
|
||||||
return 0;
|
|
||||||
d = p->buf;
|
d = p->buf;
|
||||||
code = (d[0] << 12) | (d[1] << 4) | (d[2] >> 4);
|
code = (d[0] << 12) | (d[1] << 4) | (d[2] >> 4);
|
||||||
if (code == 0x10) {
|
if (code == 0x10) {
|
||||||
|
@ -1063,8 +1063,6 @@ static int rm_read_close(AVFormatContext *s)
|
|||||||
static int rm_probe(AVProbeData *p)
|
static int rm_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 32)
|
|
||||||
return 0;
|
|
||||||
if ((p->buf[0] == '.' && p->buf[1] == 'R' &&
|
if ((p->buf[0] == '.' && p->buf[1] == 'R' &&
|
||||||
p->buf[2] == 'M' && p->buf[3] == 'F' &&
|
p->buf[2] == 'M' && p->buf[3] == 'F' &&
|
||||||
p->buf[4] == 0 && p->buf[5] == 0) ||
|
p->buf[4] == 0 && p->buf[5] == 0) ||
|
||||||
|
@ -66,9 +66,6 @@ typedef struct FilmDemuxContext {
|
|||||||
|
|
||||||
static int film_probe(AVProbeData *p)
|
static int film_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 4)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AV_RB32(&p->buf[0]) != FILM_TAG)
|
if (AV_RB32(&p->buf[0]) != FILM_TAG)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -59,9 +59,6 @@ typedef struct VmdDemuxContext {
|
|||||||
|
|
||||||
static int vmd_probe(AVProbeData *p)
|
static int vmd_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 2)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* check if the first 2 bytes of the file contain the appropriate size
|
/* check if the first 2 bytes of the file contain the appropriate size
|
||||||
* of a VMD header chunk */
|
* of a VMD header chunk */
|
||||||
if (AV_RL16(&p->buf[0]) != VMD_HEADER_SIZE - 2)
|
if (AV_RL16(&p->buf[0]) != VMD_HEADER_SIZE - 2)
|
||||||
|
@ -88,8 +88,6 @@ static const uint8_t smk_pal[64] = {
|
|||||||
|
|
||||||
static int smacker_probe(AVProbeData *p)
|
static int smacker_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
if (p->buf_size < 4)
|
|
||||||
return 0;
|
|
||||||
if(p->buf[0] == 'S' && p->buf[1] == 'M' && p->buf[2] == 'K'
|
if(p->buf[0] == 'S' && p->buf[1] == 'M' && p->buf[2] == 'K'
|
||||||
&& (p->buf[3] == '2' || p->buf[3] == '4'))
|
&& (p->buf[3] == '2' || p->buf[3] == '4'))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -35,8 +35,6 @@ static int sol_probe(AVProbeData *p)
|
|||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
uint16_t magic;
|
uint16_t magic;
|
||||||
if (p->buf_size <= 14)
|
|
||||||
return 0;
|
|
||||||
magic=le2me_16(*((uint16_t*)p->buf));
|
magic=le2me_16(*((uint16_t*)p->buf));
|
||||||
if ((magic == 0x0B8D || magic == 0x0C0D || magic == 0x0C8D) &&
|
if ((magic == 0x0B8D || magic == 0x0C0D || magic == 0x0C8D) &&
|
||||||
p->buf[2] == 'S' && p->buf[3] == 'O' &&
|
p->buf[2] == 'S' && p->buf[3] == 'O' &&
|
||||||
|
@ -618,8 +618,6 @@ static int get_swf_tag(ByteIOContext *pb, int *len_ptr)
|
|||||||
static int swf_probe(AVProbeData *p)
|
static int swf_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size <= 16)
|
|
||||||
return 0;
|
|
||||||
if ((p->buf[0] == 'F' || p->buf[0] == 'C') && p->buf[1] == 'W' &&
|
if ((p->buf[0] == 'F' || p->buf[0] == 'C') && p->buf[1] == 'W' &&
|
||||||
p->buf[2] == 'S')
|
p->buf[2] == 'S')
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
|
@ -47,9 +47,6 @@ typedef struct ThpDemuxContext {
|
|||||||
static int thp_probe(AVProbeData *p)
|
static int thp_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (p->buf_size < 4)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (AV_RL32(p->buf) == MKTAG('T', 'H', 'P', '\0'))
|
if (AV_RL32(p->buf) == MKTAG('T', 'H', 'P', '\0'))
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
else
|
else
|
||||||
|
@ -29,8 +29,6 @@ typedef struct {
|
|||||||
static int tta_probe(AVProbeData *p)
|
static int tta_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
const uint8_t *d = p->buf;
|
const uint8_t *d = p->buf;
|
||||||
if (p->buf_size < 4)
|
|
||||||
return 0;
|
|
||||||
if (d[0] == 'T' && d[1] == 'T' && d[2] == 'A' && d[3] == '1')
|
if (d[0] == 'T' && d[1] == 'T' && d[2] == 'A' && d[3] == '1')
|
||||||
return 80;
|
return 80;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -429,7 +429,7 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
|
|||||||
for(probe_size= PROBE_BUF_MIN; probe_size<=PROBE_BUF_MAX && !fmt; probe_size<<=1){
|
for(probe_size= PROBE_BUF_MIN; probe_size<=PROBE_BUF_MAX && !fmt; probe_size<<=1){
|
||||||
int score= probe_size < PROBE_BUF_MAX ? AVPROBE_SCORE_MAX/4 : 0;
|
int score= probe_size < PROBE_BUF_MAX ? AVPROBE_SCORE_MAX/4 : 0;
|
||||||
/* read probe data */
|
/* read probe data */
|
||||||
pd->buf= av_realloc(pd->buf, probe_size);
|
pd->buf= av_realloc(pd->buf, probe_size + AVPROBE_PADDING_SIZE);
|
||||||
pd->buf_size = get_buffer(pb, pd->buf, probe_size);
|
pd->buf_size = get_buffer(pb, pd->buf, probe_size);
|
||||||
if (url_fseek(pb, 0, SEEK_SET) < 0) {
|
if (url_fseek(pb, 0, SEEK_SET) < 0) {
|
||||||
url_fclose(pb);
|
url_fclose(pb);
|
||||||
|
@ -28,8 +28,6 @@ static int voc_probe(AVProbeData *p)
|
|||||||
{
|
{
|
||||||
int version, check;
|
int version, check;
|
||||||
|
|
||||||
if (p->buf_size < 26)
|
|
||||||
return 0;
|
|
||||||
if (memcmp(p->buf, voc_magic, sizeof(voc_magic) - 1))
|
if (memcmp(p->buf, voc_magic, sizeof(voc_magic) - 1))
|
||||||
return 0;
|
return 0;
|
||||||
version = p->buf[22] | (p->buf[23] << 8);
|
version = p->buf[22] | (p->buf[23] << 8);
|
||||||
|
@ -386,8 +386,6 @@ static int yuv4_read_close(AVFormatContext *s)
|
|||||||
static int yuv4_probe(AVProbeData *pd)
|
static int yuv4_probe(AVProbeData *pd)
|
||||||
{
|
{
|
||||||
/* check file header */
|
/* check file header */
|
||||||
if (pd->buf_size <= sizeof(Y4M_MAGIC))
|
|
||||||
return 0;
|
|
||||||
if (strncmp(pd->buf, Y4M_MAGIC, sizeof(Y4M_MAGIC)-1)==0)
|
if (strncmp(pd->buf, Y4M_MAGIC, sizeof(Y4M_MAGIC)-1)==0)
|
||||||
return AVPROBE_SCORE_MAX;
|
return AVPROBE_SCORE_MAX;
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user