mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
changed av_open_input_file() prototype
Originally committed as revision 146 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4b44538ce6
commit
96baaa6aff
@ -180,7 +180,10 @@ int fifo_size(FifoBuffer *f, UINT8 *rptr);
|
||||
int fifo_read(FifoBuffer *f, UINT8 *buf, int buf_size, UINT8 **rptr_ptr);
|
||||
void fifo_write(FifoBuffer *f, UINT8 *buf, int size, UINT8 **wptr_ptr);
|
||||
|
||||
AVFormatContext *av_open_input_file(const char *filename, int buf_size);
|
||||
AVFormatContext *av_open_input_file(const char *filename,
|
||||
const char *format_name,
|
||||
int buf_size,
|
||||
AVFormatParameters *ap);
|
||||
int av_read_packet(AVFormatContext *s, AVPacket *pkt);
|
||||
void av_close_input_file(AVFormatContext *s);
|
||||
|
||||
@ -204,3 +207,10 @@ int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||
|
||||
int get_frame_filename(char *buf, int buf_size,
|
||||
const char *path, int number);
|
||||
|
||||
/* grab/output specific */
|
||||
extern AVFormat video_grab_device_format;
|
||||
extern AVFormat audio_device_format;
|
||||
|
||||
extern const char *v4l_device;
|
||||
extern const char *audio_device;
|
||||
|
@ -161,13 +161,14 @@ void register_all(void)
|
||||
register_avformat(&pgmpipe_format);
|
||||
register_avformat(&pgmyuvpipe_format);
|
||||
register_avformat(&ppmpipe_format);
|
||||
#ifdef CONFIG_GRAB
|
||||
register_avformat(&video_grab_device_format);
|
||||
register_avformat(&audio_device_format);
|
||||
#endif
|
||||
|
||||
/* file protocols */
|
||||
register_protocol(&file_protocol);
|
||||
register_protocol(&pipe_protocol);
|
||||
#ifdef CONFIG_GRAB
|
||||
register_protocol(&audio_protocol);
|
||||
register_protocol(&video_protocol);
|
||||
#endif
|
||||
#ifndef CONFIG_WIN32
|
||||
register_protocol(&udp_protocol);
|
||||
register_protocol(&http_protocol);
|
||||
@ -274,49 +275,51 @@ void fifo_write(FifoBuffer *f, UINT8 *buf, int size, UINT8 **wptr_ptr)
|
||||
*wptr_ptr = wptr;
|
||||
}
|
||||
|
||||
/* media file handling */
|
||||
/* media file handling.
|
||||
'filename' is the filename to open.
|
||||
'format_name' is used to force the file format (NULL if auto guess).
|
||||
'buf_size' is the optional buffer size (zero if default is OK).
|
||||
'ap' are additionnal parameters needed when opening the file (NULL if default).
|
||||
*/
|
||||
|
||||
AVFormatContext *av_open_input_file(const char *filename, int buf_size)
|
||||
AVFormatContext *av_open_input_file(const char *filename,
|
||||
const char *format_name,
|
||||
int buf_size,
|
||||
AVFormatParameters *ap)
|
||||
{
|
||||
AVFormatParameters params, *ap;
|
||||
AVFormat *fmt;
|
||||
AVFormatContext *ic = NULL;
|
||||
URLFormat url_format;
|
||||
int err;
|
||||
|
||||
ic = av_mallocz(sizeof(AVFormatContext));
|
||||
if (!ic)
|
||||
goto fail;
|
||||
if (url_fopen(&ic->pb, filename, URL_RDONLY) < 0)
|
||||
goto fail;
|
||||
|
||||
if (buf_size > 0) {
|
||||
url_setbufsize(&ic->pb, buf_size);
|
||||
}
|
||||
|
||||
/* find format */
|
||||
err = url_getformat(url_fileno(&ic->pb), &url_format);
|
||||
if (err >= 0) {
|
||||
fmt = guess_format(url_format.format_name, NULL, NULL);
|
||||
ap = ¶ms;
|
||||
ap->sample_rate = url_format.sample_rate;
|
||||
ap->frame_rate = url_format.frame_rate;
|
||||
ap->channels = url_format.channels;
|
||||
ap->width = url_format.width;
|
||||
ap->height = url_format.height;
|
||||
ap->pix_fmt = url_format.pix_fmt;
|
||||
if (format_name != NULL) {
|
||||
fmt = guess_format(format_name, NULL, NULL);
|
||||
} else {
|
||||
fmt = guess_format(NULL, filename, NULL);
|
||||
ap = NULL;
|
||||
}
|
||||
if (!fmt || !fmt->read_header) {
|
||||
return NULL;
|
||||
}
|
||||
ic->format = fmt;
|
||||
|
||||
/* if no file needed do not try to open one */
|
||||
if (!(fmt->flags & AVFMT_NOFILE)) {
|
||||
if (url_fopen(&ic->pb, filename, URL_RDONLY) < 0)
|
||||
goto fail;
|
||||
if (buf_size > 0) {
|
||||
url_setbufsize(&ic->pb, buf_size);
|
||||
}
|
||||
}
|
||||
|
||||
err = ic->format->read_header(ic, ap);
|
||||
if (err < 0) {
|
||||
url_fclose(&ic->pb);
|
||||
if (!(fmt->flags & AVFMT_NOFILE)) {
|
||||
url_fclose(&ic->pb);
|
||||
}
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -364,7 +367,9 @@ void av_close_input_file(AVFormatContext *s)
|
||||
}
|
||||
s->packet_buffer = NULL;
|
||||
}
|
||||
url_fclose(&s->pb);
|
||||
if (!(s->format->flags & AVFMT_NOFILE)) {
|
||||
url_fclose(&s->pb);
|
||||
}
|
||||
free(s);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user