~ubuntu-branches/debian/sid/mplayer/sid

« back to all changes in this revision

Viewing changes to libmpdemux/demux_mf.c

  • Committer: Bazaar Package Importer
  • Author(s): A Mennucc1
  • Date: 2009-03-23 10:05:45 UTC
  • mfrom: (4.1.4 sid)
  • Revision ID: james.westby@ubuntu.com-20090323100545-x8h79obawnnte7kk
Tags: 1.0~rc2+svn20090303-5
debian/control : move docbook-xml,docbook-xsl,xsltproc from 
Build-Depends-Indep to Build-Depends, since they are needed to run
configure

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
static void demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){
19
19
  mf_t * mf = (mf_t *)demuxer->priv;
20
20
  sh_video_t   * sh_video = demuxer->video->sh;
21
 
  int newpos = (flags & 1)?0:mf->curr_frame - 1;
 
21
  int newpos = (flags & SEEK_ABSOLUTE)?0:mf->curr_frame - 1;
22
22
  
23
 
  if ( flags & 2 ) newpos+=rel_seek_secs*(mf->nr_of_files - 1);
 
23
  if ( flags & SEEK_FACTOR ) newpos+=rel_seek_secs*(mf->nr_of_files - 1);
24
24
   else newpos+=rel_seek_secs * sh_video->fps;
25
25
  if ( newpos < 0 ) newpos=0;
26
26
  if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1;
41
41
  stat( mf->names[mf->curr_frame],&fs );
42
42
//  printf( "[demux_mf] frame: %d (%s,%d)\n",mf->curr_frame,mf->names[mf->curr_frame],fs.st_size );
43
43
 
44
 
#ifdef WIN32
45
44
  if ( !( f=fopen( mf->names[mf->curr_frame],"rb" ) ) ) return 0;
46
 
#else
47
 
  if ( !( f=fopen( mf->names[mf->curr_frame],"r" ) ) ) return 0;
48
 
#endif
49
45
  {
50
46
   sh_video_t     * sh_video = demuxer->video->sh;
51
47
   demux_packet_t * dp = new_demux_packet( fs.st_size );
62
58
  return 1;
63
59
}
64
60
 
 
61
static const struct {
 
62
  const char *type;
 
63
  uint32_t format;
 
64
} type2format[] = {
 
65
  { "bmp",  mmioFOURCC('b', 'm', 'p', ' ') },
 
66
  { "jpeg", mmioFOURCC('I', 'J', 'P', 'G') },
 
67
  { "jpg",  mmioFOURCC('I', 'J', 'P', 'G') },
 
68
  { "pcx",  mmioFOURCC('p', 'c', 'x', ' ') },
 
69
  { "png",  mmioFOURCC('M', 'P', 'N', 'G') },
 
70
  { "ptx",  mmioFOURCC('p', 't', 'x', ' ') },
 
71
  { "tga",  mmioFOURCC('M', 'T', 'G', 'A') },
 
72
  { "tif",  mmioFOURCC('t', 'i', 'f', 'f') },
 
73
  { "sgi",  mmioFOURCC('S', 'G', 'I', '1') },
 
74
  { "sun",  mmioFOURCC('s', 'u', 'n', ' ') },
 
75
  { "ras",  mmioFOURCC('s', 'u', 'n', ' ') },
 
76
  { "ra",  mmioFOURCC('s', 'u', 'n', ' ') },
 
77
  { "im1",  mmioFOURCC('s', 'u', 'n', ' ') },
 
78
  { "im8",  mmioFOURCC('s', 'u', 'n', ' ') },
 
79
  { "im24",  mmioFOURCC('s', 'u', 'n', ' ') },
 
80
  { "sunras",  mmioFOURCC('s', 'u', 'n', ' ') },
 
81
  { NULL,   0 }
 
82
};
 
83
 
65
84
static demuxer_t* demux_open_mf(demuxer_t* demuxer){
66
85
  sh_video_t   *sh_video = NULL;
67
86
  mf_t         *mf = NULL;
 
87
  int i;
68
88
  
69
89
  if(!demuxer->stream->url) return NULL;
70
90
  if(strncmp(demuxer->stream->url, "mf://", 5)) return NULL;
99
119
  // video_read_properties() will choke
100
120
  sh_video->ds = demuxer->video;
101
121
  
102
 
  if ( !strcasecmp( mf_type,"jpg" ) || 
103
 
        !(strcasecmp(mf_type, "jpeg"))) sh_video->format = mmioFOURCC('I', 'J', 'P', 'G');
104
 
  else 
105
 
     if ( !strcasecmp( mf_type,"png" )) sh_video->format = mmioFOURCC('M', 'P', 'N', 'G' );
106
 
  else
107
 
     if ( !strcasecmp( mf_type,"tga" )) sh_video->format = mmioFOURCC('M', 'T', 'G', 'A' );
108
 
  else
109
 
     if ( !strcasecmp( mf_type,"bmp" )) sh_video->format = mmioFOURCC('b', 'm', 'p', ' ' );
110
 
   else
111
 
     if (!strcasecmp( mf_type,"sgi" )) sh_video->format = mmioFOURCC('S', 'G', 'I', '1');
112
 
  else { mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] unknown input file type.\n" ); free( mf ); return NULL; }
 
122
  for (i = 0; type2format[i].type; i++)
 
123
    if (strcasecmp(mf_type, type2format[i].type) == 0)
 
124
      break;
 
125
  if (!type2format[i].type) {
 
126
    mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] unknown input file type.\n" );
 
127
    free(mf);
 
128
    return NULL;
 
129
  }
 
130
  sh_video->format = type2format[i].format;
113
131
 
114
132
  sh_video->disp_w = mf_w;
115
133
  sh_video->disp_h = mf_h;
163
181
  }
164
182
}
165
183
 
166
 
demuxer_desc_t demuxer_desc_mf = {
 
184
const demuxer_desc_t demuxer_desc_mf = {
167
185
  "mf demuxer",
168
186
  "mf",
169
187
  "MF",