* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#define HAVE_AV_CONFIG_H
+
+#include <math.h>
+#include <limits.h>
#include "avformat.h"
#include "swscale.h"
+#include "avstring.h"
#include "version.h"
#include "cmdutils.h"
#undef main /* We don't want SDL to override our main() */
#endif
-#ifdef CONFIG_OS2
-#define INCL_DOS
- #include <os2.h>
- #include <stdio.h>
-
- void MorphToPM()
- {
- PPIB pib;
- PTIB tib;
-
- DosGetInfoBlocks(&tib, &pib);
-
- // Change flag from VIO to PM:
- if (pib->pib_ultype==2) pib->pib_ultype = 3;
- }
-#endif
+#undef exit
//#define DEBUG_SYNC
/* NOTE: ipts is the PTS of the _first_ picture beginning in
this packet, if any */
- global_video_pkt_pts= pkt->pts;
- len1 = avcodec_decode_video(is->video_st->codec,
- frame, &got_picture,
- pkt->data, pkt->size);
-
- if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE)
- && frame->opaque && *(uint64_t*)frame->opaque != AV_NOPTS_VALUE)
- pts= *(uint64_t*)frame->opaque;
- else if(pkt->dts != AV_NOPTS_VALUE)
- pts= pkt->dts;
- else
- pts= 0;
- pts *= av_q2d(is->video_st->time_base);
+ global_video_pkt_pts= pkt->pts;
+ len1 = avcodec_decode_video(is->video_st->codec,
+ frame, &got_picture,
+ pkt->data, pkt->size);
+
+ if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE)
+ && frame->opaque && *(uint64_t*)frame->opaque != AV_NOPTS_VALUE)
+ pts= *(uint64_t*)frame->opaque;
+ else if(pkt->dts != AV_NOPTS_VALUE)
+ pts= pkt->dts;
+ else
+ pts= 0;
+ pts *= av_q2d(is->video_st->time_base);
// if (len1 < 0)
// break;
- if (got_picture) {
- if (output_picture2(is, frame, pts) < 0)
- goto the_end;
- }
+ if (got_picture) {
+ if (output_picture2(is, frame, pts) < 0)
+ goto the_end;
+ }
av_free_packet(pkt);
if (step)
if (cur_stream)
goto fail;
}
is->ic = ic;
-#ifdef CONFIG_NETWORK
+#ifdef CONFIG_RTSP_DEMUXER
use_play = (ic->iformat == &rtsp_demuxer);
#else
use_play = 0;
ret = -1;
goto fail;
}
- ic->pb.eof_reached= 0; //FIXME hack, ffplay maybe shouldnt use url_feof() to test for the end
+ ic->pb.eof_reached= 0; //FIXME hack, ffplay maybe should not use url_feof() to test for the end
}
/* if seeking requested, we execute it */
for(;;) {
if (is->abort_request)
break;
-#ifdef CONFIG_NETWORK
if (is->paused != is->last_paused) {
is->last_paused = is->paused;
if (is->paused)
else
av_read_play(ic);
}
+#ifdef CONFIG_RTSP_DEMUXER
if (is->paused && ic->iformat == &rtsp_demuxer) {
/* wait 10 ms to avoid trying to get another packet */
/* XXX: horrible */
is = av_mallocz(sizeof(VideoState));
if (!is)
return NULL;
- pstrcpy(is->filename, sizeof(is->filename), filename);
+ av_strlcpy(is->filename, filename, sizeof(is->filename));
is->iformat = iformat;
is->ytop = 0;
is->xleft = 0;
static void opt_frame_size(const char *arg)
{
- if (parse_image_size(&frame_width, &frame_height, arg) < 0) {
+ if (av_parse_video_frame_size(&frame_width, &frame_height, arg) < 0) {
fprintf(stderr, "Incorrect frame size\n");
exit(1);
}
}
}
-void opt_width(const char *arg)
+static void opt_width(const char *arg)
{
screen_width = atoi(arg);
if(screen_width<=0){
}
}
-void opt_height(const char *arg)
+static void opt_height(const char *arg)
{
screen_height = atoi(arg);
if(screen_height<=0){
frame_pix_fmt = avcodec_get_pix_fmt(arg);
}
-#ifdef CONFIG_NETWORK
-void opt_rtp_tcp(void)
+#ifdef CONFIG_RTSP_DEMUXER
+static void opt_rtp_tcp(void)
{
/* only tcp protocol */
rtsp_default_protocols = (1 << RTSP_PROTOCOL_RTP_TCP);
}
#endif
-void opt_sync(const char *arg)
+static void opt_sync(const char *arg)
{
if (!strcmp(arg, "audio"))
av_sync_type = AV_SYNC_AUDIO_MASTER;
show_help();
}
-void opt_seek(const char *arg)
+static void opt_seek(const char *arg)
{
start_time = parse_date(arg, 1);
}
{ "idct", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&idct}, "set idct algo", "algo" },
{ "er", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_resilience}, "set error detection threshold (0-4)", "threshold" },
{ "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options", "bit_mask" },
-#ifdef CONFIG_NETWORK
+#ifdef CONFIG_RTSP_DEMUXER
{ "rtp_tcp", OPT_EXPERT, {(void*)&opt_rtp_tcp}, "force RTP/TCP protocol usage", "" },
#endif
{ "sync", HAS_ARG | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
void show_help(void)
{
- printf("ffplay version " FFMPEG_VERSION ", Copyright (c) 2003-2006 Fabrice Bellard, et al.\n"
+ printf("ffplay version " FFMPEG_VERSION ", Copyright (c) 2003-2007 Fabrice Bellard, et al.\n"
"usage: ffplay [options] input_file\n"
"Simple media player\n");
printf("\n");
/* register all codecs, demux and protocols */
av_register_all();
- #ifdef CONFIG_OS2
- MorphToPM(); // Morph the VIO application to a PM one to be able to use Win* functions
-
- // Make stdout and stderr unbuffered
- setbuf( stdout, NULL );
- setbuf( stderr, NULL );
- #endif
-
parse_options(argc, argv, options);
if (!input_filename)