actual_width = width = 0;
actual_height = height = 0;
video_length = 0;
+ single_frame = 0;
vmpeg_cmodel = BC_YUV420P;
frame_rate = 0;
program = -1;
this->audio_length = asset->audio_length;
this->video_length = asset->video_length;
-
+ this->single_frame = asset->single_frame;
ampeg_bitrate = asset->ampeg_bitrate;
ampeg_derivative = asset->ampeg_derivative;
file->tag.get_property("VCODEC", vcodec);
video_length = file->tag.get_property("VIDEO_LENGTH", (int64_t)0);
+ single_frame = file->tag.get_property("SINGLE_FRAME", (int64_t)0);
interlace_autofixoption = file->tag.get_property("INTERLACE_AUTOFIX",0);
file->tag.set_property("VCODEC", vcodec);
file->tag.set_property("VIDEO_LENGTH", video_length);
+ file->tag.set_property("SINGLE_FRAME", single_frame);
file->tag.set_property("INTERLACE_AUTOFIX", interlace_autofixoption);
layers = GET_DEFAULT("LAYERS", layers);
if(EQUIV(frame_rate, 0)) frame_rate = GET_DEFAULT("FRAMERATE", frame_rate);
video_length = GET_DEFAULT("VIDEO_LENGTH", (int64_t)0);
+ single_frame = GET_DEFAULT("SINGLE_FRAME", (int64_t)0);
}
ampeg_bitrate = GET_DEFAULT("AMPEG_BITRATE", ampeg_bitrate);
UPDATE_DEFAULT("LAYERS", layers);
UPDATE_DEFAULT("FRAMERATE", frame_rate);
UPDATE_DEFAULT("VIDEO_LENGTH", video_length);
+ UPDATE_DEFAULT("SINGLE_FRAME", single_frame);
}
vcodec, aspect_ratio,string);
fprintf(fp," reel_name %s reel_number %i tcstart %jd tcend %jd tcf %d\n",
reel_name, reel_number, tcstart, tcend, tcformat);
- fprintf(fp," video_length %jd \n", video_length);
+ fprintf(fp," video_length %jd repeat %d\n", video_length, single_frame);
return 0;
int64_t audio_length;
-// contains video data
- int video_data;
+// contains video data, single frame data set
+ int video_data, single_frame;
int layers, program;
double frame_rate;
mwindow->gui->get_abs_cursor_y(1) - (128 + 64 +
(!asset_edit->indexable->have_audio() ? 0 : 180) +
(!asset_edit->indexable->have_video() ? 0 : 350)) / 2,
- 400, (128 + 64 +
+ 450, (128 + 64 +
(!asset_edit->indexable->have_audio() ? 0 : 180) +
(!asset_edit->indexable->have_video() ? 0 : 350)), 0, 0, 1)
{
void AssetEditWindow::create_objects()
{
- int y = 10, x = 10, x1 = 10, x2 = 160;
+ int y = 10, x = 10, x1 = 10, x2 = 190;
char string[BCTEXTLEN];
int vmargin;
FileSystem fs;
if( rd ) {
// one frame image file, no specific length
- if( !this->asset->audio_data && this->asset->video_data &&
- this->asset->video_length <= 1 )
+ if( !this->asset->audio_data &&
+ this->asset->video_data && !this->asset->single_frame &&
+ this->asset->video_length >= 0 && this->asset->video_length <= 1 ) {
+ this->asset->single_frame = 1;
this->asset->video_length = -1;
+ }
}
// Synchronize header parameters
int File::read_samples(Samples *samples, int64_t len)
{
// Never try to read more samples than exist in the file
- if (current_sample + len > asset->audio_length) {
+ if (asset->audio_length >= 0 && current_sample + len > asset->audio_length) {
len = asset->audio_length - current_sample;
}
if(len <= 0) return 0;
if(debug) PRINT_TRACE
int supported_colormodel = colormodel_supported(frame->get_color_model());
int advance_position = 1;
- int cache_active = use_cache || asset->video_length < 0 ? 1 : 0;
- int64_t cache_position = asset->video_length >= 0 ? current_frame : -1;
+ int cache_active = use_cache || asset->single_frame ? 1 : 0;
+ int64_t cache_position = !asset->single_frame ? current_frame : -1;
// Test cache
if( cache_active && frame_cache->get_frame(frame, cache_position,
current_layer, asset->frame_rate) )
}
else
{
+ asset->single_frame = 1;
// Allocate and decompress single frame into new temporary
//printf("FileList::read_frame %d\n", frame->get_color_model());
if(!temp || temp->get_color_model() != frame->get_color_model())
// Paths relative to the exe path
+#ifdef HAVE_FESTIVAL_BUILTIN
#define FESTIVAL_PATH "/festival"
#define FESTIVAL_LIB_PATH "/lib/"
+#endif
#define ASSET_PATH "/models/"
#define FREAD_SIZE 0x10000
#define WAVHEADER 44
uuid_unparse(temp_id, script_path + strlen(script_path));
FILE *script_fd = fopen(script_path, "w");
+#ifdef HAVE_FESTIVAL_BUILTIN
sprintf(command_line, "%s%s --libdir %s%s -b %s",
script->file->exec_path, FESTIVAL_PATH,
script->file->exec_path, FESTIVAL_LIB_PATH,
script_path);
+#else
+ sprintf(command_line, "festival -b %s", script_path);
+#endif
// Create script.
// The maximum text length is limited with the command line
int x,
int y)
: BC_Window(_(PROGRAM_NAME ": Preferences"),
- x,
- y,
- WIDTH,
- HEIGHT,
- (int)BC_INFINITY,
- (int)BC_INFINITY,
- 0,
- 0,
- 1)
+ x,y, WIDTH,HEIGHT, WIDTH,HEIGHT, 1,0,1)
{
this->mwindow = mwindow;
this->thread = thread;
eta,
TIME_HMS2);
- printf(_("\r%d%% ETA: %s "), (int)(100 *
- (float)render->total_rendered /
- render->progress_max),
- string);
+ printf("\r%d%% %s: %s ",
+ (int)(100 * (float)render->total_rendered / render->progress_max),
+ _("ETA"), string);
fflush(stdout);
render->last_eta = current_eta;
}
AIRFORCE
-voice: nitech_us_clb_arctic_hts
+#voice: nitech_us_clb_arctic_hts
+voice: nitech_us_slt_arctic_hts
#model: knight01
model: warrior01
#model: amazon01
track_zoom->zoom_tumbler->set_tooltip(_("Height of tracks in the timeline"));
x += track_zoom->get_w() + 10;
- add_subwindow(auto_type = new AutoTypeMenu(mwindow, this, x, y));
+ int wid = 120;
+ for( int i=AUTOGROUPTYPE_AUDIO_FADE; i<=AUTOGROUPTYPE_Y; ++i ) {
+ int ww = BC_GenericButton::calculate_w(this, AutoTypeMenu::to_text(i));
+ if( ww > wid ) wid = ww;
+ }
+ add_subwindow(auto_type = new AutoTypeMenu(mwindow, this, x, y, wid));
auto_type->create_objects();
x += auto_type->get_w() + 10;
#define DEFAULT_TEXT "000.00 to 000.00"
-AutoTypeMenu::AutoTypeMenu(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : BC_PopupMenu(x, y, 120,to_text(mwindow->edl->local_session->zoombar_showautotype), 1)
+AutoTypeMenu::AutoTypeMenu(MWindow *mwindow, ZoomBar *zoombar, int x, int y, int wid)
+ : BC_PopupMenu(x, y, wid, to_text(mwindow->edl->local_session->zoombar_showautotype), 1)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
class AutoTypeMenu : public BC_PopupMenu
{
public:
- AutoTypeMenu(MWindow *mwindow,
- ZoomBar *zoombar,
- int x,
- int y);
+ AutoTypeMenu(MWindow *mwindow, ZoomBar *zoombar,
+ int x, int y, int wid);
void create_objects();
static const char* to_text(int shape);
static int from_text(char *text);
[ libAACdec/include libAACenc/include libSYS/include ])
PKG_3RD([ffmpeg],[yes],
- [ffmpeg-3.0],
+ [ffmpeg-3.1.1],
[ libavutil/libavutil.a \
libavcodec/libavcodec.a \
libpostproc/libpostproc.a \
#ffbuffersink
#fftfilt
#field
+#fieldhint
#fieldmatch
#fieldorder
#fifo
#pullup
#qp
#random
+#remap
#removelogo
#repeatfields
#replaygain
OBJS = $(OBJDIR)/blondtheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/blondtheme.o: blondtheme.C
OBJS = $(OBJDIR)/bluetheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/bluetheme.o: bluetheme.C
OBJS = $(OBJDIR)/bluedottheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-LIBRAW_DIR := $(shell cd ../../thirdparty/libraw1394*; pwd)
-CFLAGS += -I../../$(AVC_DIR) -I../../$(LIBRAW_DIR)
-
include ../../plugin_config
$(OBJDIR)/bluedottheme.o: bluedottheme.C
OBJS = $(OBJDIR)/brighttheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/brighttheme.o: brighttheme.C
OBJS = $(OBJDIR)/hulktheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/hulktheme.o: hulktheme.C
OBJS = $(OBJDIR)/pinkladytheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/pinkladytheme.o: pinkladytheme.C
OBJS = $(OBJDIR)/suv.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/suv.o: suv.C
OBJS = $(OBJDIR)/unflattheme.o
OUTPUT_THEME = $(OUTPUT)
-AVC_DIR := $(shell cd ../../thirdparty/libavc*; pwd)
-CFLAGS += -I$(AVC_DIR)
-
include ../../plugin_config
$(OBJDIR)/unflattheme.o: unflattheme.C
#endif
size_title->reposition_window(size_title->get_x(), size_title->get_y());
size->reposition_window(size->get_x(), size->get_y());
- size_tumbler->reposition_window(size_title->get_x(), size_title->get_y());
+ size_tumbler->reposition_window(size_tumbler->get_x(), size_tumbler->get_y());
pitch_title->reposition_window(pitch_title->get_x(), pitch_title->get_y());
- pitch->reposition_window(size->get_x(), size->get_y());
+ pitch->reposition_window(pitch->get_x(), pitch->get_y());
#ifndef X_HAVE_UTF8_STRING
encoding->reposition_window(encoding->get_x(), encoding->get_y());
--- /dev/null
+diff -ur ffmpeg-3.1.1.orig/libavcodec/avcodec.h ffmpeg-3.1.1/libavcodec/avcodec.h
+--- ffmpeg-3.1.1.orig/libavcodec/avcodec.h 2016-06-26 17:54:28.000000000 -0600
++++ ffmpeg-3.1.1/libavcodec/avcodec.h 2016-07-08 09:32:20.040623502 -0600
+@@ -4700,7 +4700,7 @@
+ *
+ * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
+ */
+-attribute_deprecated
++//attribute_deprecated
+ int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,
+ int *got_frame_ptr, const AVPacket *avpkt);
+
+@@ -4749,7 +4749,7 @@
+ *
+ * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
+ */
+-attribute_deprecated
++//attribute_deprecated
+ int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
+ int *got_picture_ptr,
+ const AVPacket *avpkt);
+@@ -5218,7 +5218,7 @@
+ *
+ * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead
+ */
+-attribute_deprecated
++//attribute_deprecated
+ int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt,
+ const AVFrame *frame, int *got_packet_ptr);
+
+@@ -5257,7 +5257,7 @@
+ *
+ * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead
+ */
+-attribute_deprecated
++//attribute_deprecated
+ int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt,
+ const AVFrame *frame, int *got_packet_ptr);
+
+@@ -5778,7 +5778,7 @@
+ * @return a bitstream filter context if a matching filter was found
+ * and successfully initialized, NULL otherwise
+ */
+-attribute_deprecated
++//attribute_deprecated
+ AVBitStreamFilterContext *av_bitstream_filter_init(const char *name);
+
+ /**
+@@ -5810,7 +5810,7 @@
+ * its starting address). A special case is if *poutbuf was set to NULL and
+ * *poutbuf_size was set to 0, which indicates the packet should be dropped.
+ */
+-attribute_deprecated
++//attribute_deprecated
+ int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
+ AVCodecContext *avctx, const char *args,
+ uint8_t **poutbuf, int *poutbuf_size,
+@@ -5822,7 +5822,7 @@
+ * @param bsf the bitstream filter context created with
+ * av_bitstream_filter_init(), can be NULL
+ */
+-attribute_deprecated
++//attribute_deprecated
+ void av_bitstream_filter_close(AVBitStreamFilterContext *bsf);
+
+ /**
+diff -ur ffmpeg-3.1.1.orig/libavformat/avformat.h ffmpeg-3.1.1/libavformat/avformat.h
+--- ffmpeg-3.1.1.orig/libavformat/avformat.h 2016-06-30 19:00:55.000000000 -0600
++++ ffmpeg-3.1.1/libavformat/avformat.h 2016-07-08 09:33:16.610668989 -0600
+@@ -876,7 +876,7 @@
+ /**
+ * @deprecated use the codecpar struct instead
+ */
+- attribute_deprecated
++// attribute_deprecated
+ AVCodecContext *codec;
+ #endif
+ void *priv_data;