diff options
Diffstat (limited to 'ffmpeg-fas/test/movie_info.c')
| -rw-r--r-- | ffmpeg-fas/test/movie_info.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/ffmpeg-fas/test/movie_info.c b/ffmpeg-fas/test/movie_info.c new file mode 100644 index 0000000..f7bf40e --- /dev/null +++ b/ffmpeg-fas/test/movie_info.c @@ -0,0 +1,81 @@ +/***************************************************************************** + * Copyright 2008. Pittsburgh Pattern Recognition, Inc. + * + * This file is part of the Frame Accurate Seeking extension library to + * ffmpeg (ffmpeg-fas). + * + * ffmpeg-fas is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at your + * option) any later version. + * + * The ffmpeg-fas library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with the ffmpeg-fas library. If not, see <http://www.gnu.org/licenses/>. + * + ******************************************************************************/ + +#include <libavcodec/avcodec.h> +#include <libavformat/avformat.h> + +#include <stdio.h> + +int main(int argc, char *argv[]) { + AVFormatContext *pFormatCtx; + int i, videoStream; + AVCodecContext *pCodecCtx; + AVCodec *pCodec; + AVFrame *pFrame; + AVFrame *pFrameRGB; + AVPacket packet; + int frameFinished; + int numBytes; + uint8_t *buffer; + + if(argc < 2) { + printf("Please provide a movie file\n"); + return -1; + } + // Register all formats and codecs + av_register_all(); + + // Open video file + if(av_open_input_file(&pFormatCtx, argv[1], NULL, 0, NULL)!=0) + return -1; // Couldn't open file + + // Retrieve stream information + if(av_find_stream_info(pFormatCtx)<0) + return -1; // Couldn't find stream information + + // Dump information about file onto standard error + dump_format(pFormatCtx, 0, argv[1], 0); + + // Find the first video stream + videoStream=-1; + for(i=0; i<pFormatCtx->nb_streams; i++) + if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO) { + videoStream=i; + break; + } + if(videoStream==-1) + return -1; // Didn't find a video stream + + // Get a pointer to the codec context for the video stream + pCodecCtx=pFormatCtx->streams[videoStream]->codec; + + // Find the decoder for the video stream + pCodec=avcodec_find_decoder(pCodecCtx->codec_id); + if(pCodec==NULL) { + fprintf(stderr, "Unsupported codec!\n"); + return -1; // Codec not found + } + // Open codec + if(avcodec_open(pCodecCtx, pCodec)<0) + return -1; // Could not open codec + + return 0; +} |
