Program: gdcm
Module: $RCSfile: gdcmMpeg.cxx,v $
Language: C++
- Date: $Date: 2005/05/21 18:43:52 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2005/05/21 20:03:48 $
+ Version: $Revision: 1.2 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
* @param statesuspension Suspension State basically it should be 3 otherwise more complex to handle
* @return 1 on success, 0 on error
*/
+
bool ReadMPEGFile (std::ifstream *fp, void *image_buffer)
{
int ret, code;
{
int Buffer_Level;
- Buffer_Level = read(ld->Infile,ld->Rdbfr,2048);
+ //Buffer_Level = read(ld->Infile,ld->Rdbfr,2048);
+ Buffer_Level = ld->read_stream(ld->Infile,ld->Rdbfr,2048);
ld->Rdptr = ld->Rdbfr;
if (System_Stream_Flag)
{
while(ld->Rdptr >= ld->Rdbfr+2048)
{
- read(ld->Infile,ld->Rdbfr,2048);
+ //read(ld->Infile,ld->Rdbfr,2048);
+ ld->read_stream(ld->Infile,ld->Rdbfr,2048);
ld->Rdptr -= 2048;
ld->Rdmax -= 2048;
}
/* private prototypes */
static int video_sequence _ANSI_ARGS_((int *framenum));
-static int Decode_Bitstream _ANSI_ARGS_((void));
+static int Decode_Bitstream _ANSI_ARGS_((void));
static int Headers _ANSI_ARGS_((void));
static void Initialize_Sequence _ANSI_ARGS_((void));
static void Initialize_Decoder _ANSI_ARGS_((void));
static void Print_Options();
#endif
+int my_open(char *filename)
+{
+ return open(filename,O_RDONLY|O_BINARY);
+}
+off_t my_seek(int infile, off_t offset,int whence)
+{
+ return lseek(infile, offset, whence);
+}
+ssize_t my_read(int infile,void *buf,size_t count)
+{
+ return read(infile,buf,count);
+}
+int my_close(int infile)
+{
+ return close(infile);
+}
+
+
+
int main(argc,argv)
int argc;
char *argv[];
{
int ret, code;
+ base.open_stream = my_open;
+ base.seek_stream = my_seek;
+ base.read_stream = my_read;
+ base.close_stream = my_close;
Clear_Options();
/* open MPEG base layer bitstream file(s) */
/* NOTE: this is either a base layer stream or a spatial enhancement stream */
- if ((base.Infile=open(Main_Bitstream_Filename,O_RDONLY|O_BINARY))<0)
+// if ((base.Infile=open(Main_Bitstream_Filename,O_RDONLY|O_BINARY))<0)
+ base.Infile = ld->open_stream(Main_Bitstream_Filename);
+ if( base.Infile < 0 )
{
fprintf(stderr,"Base layer input file %s not found\n", Main_Bitstream_Filename);
exit(1);
break;
}
- lseek(base.Infile, 0l, SEEK_SET);
+ //lseek(base.Infile, 0l, SEEK_SET);
+ ld->seek_stream(base.Infile,0l,SEEK_SET);
Initialize_Buffer();
}
if(base.Infile!=0)
{
- lseek(base.Infile, 0l, SEEK_SET);
+ //lseek(base.Infile, 0l, SEEK_SET);
+ ld->seek_stream(base.Infile,0l,SEEK_SET);
}
Initialize_Buffer();
{
ld = &enhan; /* select enhancement layer context */
- if ((enhan.Infile = open(Enhancement_Layer_Bitstream_Filename,O_RDONLY|O_BINARY))<0)
+ //if ((enhan.Infile = open(Enhancement_Layer_Bitstream_Filename,O_RDONLY|O_BINARY))<0)
+ enhan.Infile = ld->open_stream(Enhancement_Layer_Bitstream_Filename);
+ if (enhan.Infile<0)
{
sprintf(Error_Text,"enhancment layer bitstream file %s not found\n",
Enhancement_Layer_Bitstream_Filename);
ret = Decode_Bitstream();
- close(base.Infile);
+ //close(base.Infile);
+ ld->close_stream(base.Infile);
if (Two_Streams)
- close(enhan.Infile);
+ //close(enhan.Infile);
+ ld->close_stream(enhan.Infile);
return ret;
}
}
#endif
+