case X264_DEMUXER_YUV:
case X264_DEMUXER_CIF:
case X264_DEMUXER_QCIF:
- /* Default input file driver */
- p_open_infile = open_file_yuv;
- p_get_frame_total = get_frame_total_yuv;
- p_read_frame = read_frame_yuv;
- p_close_infile = close_file_yuv;
- break;
+ /* Default input file driver */
+ p_open_infile = open_file_yuv;
+ p_get_frame_total = get_frame_total_yuv;
+ p_read_frame = read_frame_yuv;
+ p_close_infile = close_file_yuv;
+ break;
+ case X264_DEMUXER_Y4M:
+ p_open_infile = open_file_y4m;
+ p_get_frame_total = get_frame_total_y4m;
+ p_read_frame = read_frame_y4m;
+ p_close_infile = close_file_y4m;
+ break;
#ifdef AVIS_INPUT
- case X264_DEMUXER_AVI:
- case X264_DEMUXER_AVS:
- p_open_infile = open_file_avis;
- p_get_frame_total = get_frame_total_avis;
- p_read_frame = read_frame_avis;
- p_close_infile = close_file_avis;
+ case X264_DEMUXER_AVI:
+ case X264_DEMUXER_AVS:
+ p_open_infile = open_file_avis;
+ p_get_frame_total = get_frame_total_avis;
+ p_read_frame = read_frame_avis;
+ p_close_infile = close_file_avis;
break;
#endif
- default: /* Unknown */
- return -1;
+ default: /* Unknown */
+ return -1;
}
switch (out_container) {
#include <unistd.h>
#ifdef _WIN32 /* Needed to define _O_BINARY */
# include <fcntl.h>
+# define strncasecmp _strnicmp
#endif
#include <errno.h>
#include <string.h>
gtk_file_filter_add_pattern (filter, "*.yuv");
gtk_file_filter_add_pattern (filter, "*.cif");
gtk_file_filter_add_pattern (filter, "*.qcif");
+ gtk_file_filter_add_pattern (filter, "*.y4m");
#ifdef AVIS_INPUT
gtk_file_filter_add_pattern (filter, "*.avs");
gtk_file_filter_add_pattern (filter, "*.avi");
gtk_file_filter_add_pattern (filter, "*.cif");
gtk_file_chooser_add_filter (chooser, filter);
- /* CIF filter */
+ /* QCIF filter */
filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, "YUV QCIF sequence");
gtk_file_filter_add_pattern (filter, "*.qcif");
gtk_file_chooser_add_filter (chooser, filter);
+ /* YUV4MPEG2 filter */
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, "YUV4MPEG2 sequence");
+ gtk_file_filter_add_pattern (filter, "*.y4m");
+ gtk_file_chooser_add_filter (chooser, filter);
+
#ifdef AVIS_INPUT
/* AVI filter */
filter = gtk_file_filter_new ();
{
/* All format needed, search for extension */
const char *ext = strrchr(in, '.');
- if (!strncmp(ext, ".avs", 4) || !strncmp(ext, ".AVS", 4))
+ if (!strncasecmp(ext, ".y4m", 4))
+ encode->container = X264_DEMUXER_Y4M;
+ else if (!strncasecmp(ext, ".avs", 4))
encode->container = X264_DEMUXER_AVS;
- else if (!strncmp(ext, ".avi", 4) || !strncmp(ext, ".AVI", 4))
- encode->container = X264_DEMUXER_AVS;
- else if (!strncmp(ext, ".cif", 4) || !strncmp(ext, ".CIF", 4))
+ else if (!strncasecmp(ext, ".avi", 4))
+ encode->container = X264_DEMUXER_AVI;
+ else if (!strncasecmp(ext, ".cif", 4))
encode->container = X264_DEMUXER_CIF;
- else if (!strncmp(ext, ".qcif", 4) || !strncmp(ext, ".QCIF", 4))
+ else if (!strncasecmp(ext, ".qcif", 4))
encode->container = X264_DEMUXER_QCIF;
else
encode->container = X264_DEMUXER_YUV;
switch (encode->container) {
case X264_DEMUXER_YUV: /* YUV */
break;
- case X264_DEMUXER_CIF: /* CIF */
+ case X264_DEMUXER_CIF: /* YUV CIF */
param.i_width = 352;
param.i_height = 288;
break;
- case X264_DEMUXER_QCIF: /* QCIF */
+ case X264_DEMUXER_QCIF: /* YUV QCIF */
/* Default input file driver */
param.i_width = 176;
param.i_height = 144;
break;
+ case X264_DEMUXER_Y4M: /* YUV4MPEG */
+ /* Default input file driver */
+ sensitivity = FALSE;
+ p_open_infile = open_file_y4m;
+ p_get_frame_total = get_frame_total_y4m;
+ p_close_infile = close_file_y4m;
+ break;
#ifdef AVIS_INPUT
case X264_DEMUXER_AVI: /* AVI */
case X264_DEMUXER_AVS: /* AVS */