libavformat/h263dec.c
Go to the documentation of this file.
1 /*
2  * RAW H.263 video demuxer
3  * Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #include "avformat.h"
23 #include "rawdec.h"
24 
25 static int h263_probe(AVProbeData *p)
26 {
27  uint64_t code= -1;
28  int i;
29  int valid_psc=0;
30  int invalid_psc=0;
31  int res_change=0;
32  int src_fmt, last_src_fmt=-1;
33  int last_gn=0;
34 
35  for(i=0; i<p->buf_size; i++){
36  code = (code<<8) + p->buf[i];
37  if ((code & 0xfffffc0000) == 0x800000) {
38  src_fmt= (code>>2)&3;
39  if( src_fmt != last_src_fmt
40  && last_src_fmt>0 && last_src_fmt<6
41  && src_fmt<6)
42  res_change++;
43 
44  if((code&0x300)==0x200 && src_fmt){
45  valid_psc++;
46  last_gn=0;
47  }else
48  invalid_psc++;
49  last_src_fmt= src_fmt;
50  } else if((code & 0xffff800000) == 0x800000) {
51  int gn= (code>>(23-5)) & 0x1F;
52  if(gn<last_gn){
53  invalid_psc++;
54  }else
55  last_gn= gn;
56  }
57  }
58  if(valid_psc > 2*invalid_psc + 2*res_change + 3){
59  return 50;
60  }else if(valid_psc > 2*invalid_psc)
61  return 25;
62  return 0;
63 }
64 
#define FF_DEF_RAWVIDEO_DEMUXER(shortname, longname, probe, ext, id)
Definition: rawdec.h:52
initialize output if(nPeaks >3)%at least 3 peaks in spectrum for trying to find f0 nf0peaks
int buf_size
Size of buf except extra allocated bytes.
Definition: avformat.h:337
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
Definition: avformat.h:336
NULL
Definition: eval.c:55
or the Software in violation of any applicable export control laws in any jurisdiction Except as provided by mandatorily applicable UPF has no obligation to provide you with source code to the Software In the event Software contains any source code
synthesis window for stochastic i
This structure contains the data a format has to probe a file.
Definition: avformat.h:334
Main libavformat public API header.
static int h263_probe(AVProbeData *p)