#include "vframe.h"
#include "versioninfo.h"
+
#ifndef COMPILEDATE
#define COMPILEDATE "built: " __DATE__ " " __TIME__
#endif
const char *AboutPrefs::build_timestamp = COMPILEDATE;
+const char *AboutPrefs::ffmpeg_version = CINELERRA_LIBAV_VERSION;
AboutPrefs::AboutPrefs(MWindow *mwindow, PreferencesWindow *pwindow)
: PreferencesDialog(mwindow, pwindow)
int x, y;
BC_Resources *resources = BC_WindowBase::get_resources();
-// add_subwindow(new BC_Title(mwindow->theme->preferencestitle_x,
-// mwindow->theme->preferencestitle_y,
-// _("About"),
-// LARGEFONT,
-// resources->text_default));
x = mwindow->theme->preferencesoptions_x;
y = mwindow->theme->preferencesoptions_y +
COPYRIGHTTEXT2
#endif
);
- y += get_text_height(MEDIUMFONT) * 3;
+ y += 2*get_text_height(MEDIUMFONT);
+ draw_text(x,y, COPYRIGHTTEXT3);
+ y += get_text_height(MEDIUMFONT);
+ draw_text(x,y, COPYRIGHTTEXT4);
+
+ y += get_text_height(MEDIUMFONT) * 2;
const char *cfg_path = File::get_cindat_path();
about.append(new BC_ListBoxItem(msg));
}
BC_ListBox *listbox;
- add_subwindow(listbox = new BC_ListBox(x, y, xS(450), yS(280),
+ add_subwindow(listbox = new BC_ListBox(x, y, xS(450), yS(250),
LISTBOX_TEXT, &about, 0, 0, 1));
y += listbox->get_h() + get_text_height(LARGEFONT) + yS(10);
}
y += get_text_height(MEDIUMFONT, license3);
draw_text(x, y, build_timestamp);
+ x += get_text_width(MEDIUMFONT, build_timestamp);
+ draw_text(x,y, " ");
+ x += get_text_width(MEDIUMFONT, " ");
+ draw_text(x,y, ffmpeg_version);
+ x -= get_text_width(MEDIUMFONT, build_timestamp);
+ x -= get_text_width(MEDIUMFONT, " ");
#if defined(REPOMAINTXT)
y += get_text_height(MEDIUMFONT, build_timestamp);
draw_text(x, y, REPOMAINTXT);
~AboutPrefs();
static const char *build_timestamp;
+ static const char *ffmpeg_version;
void create_objects();
ArrayList<BC_ListBoxItem*> about;
};
if( hw_pix_fmt >= 0 ) {
hw_pixfmt = hw_pix_fmt;
avctx->get_format = get_hw_format;
+ const char *drm_node = getenv("CIN_DRM_DEC");
+ if(drm_node && type==AV_HWDEVICE_TYPE_VAAPI) {
+ ret = av_hwdevice_ctx_create(&hw_device_ctx, type, drm_node, 0, 0);
+ }
+ else {
ret = av_hwdevice_ctx_create(&hw_device_ctx, type, 0, 0, 0);
+ }
+
if( ret >= 0 ) {
avctx->hw_device_ctx = av_buffer_ref(hw_device_ctx);
ret = 1;
AVHWDeviceType FFVideoStream::encode_hw_activate(const char *hw_dev)
{
+ const char *drm_node_enc = getenv("CIN_DRM_ENC");
AVBufferRef *hw_device_ctx = 0;
AVBufferRef *hw_frames_ref = 0;
AVHWDeviceType type = AV_HWDEVICE_TYPE_NONE;
}
}
if( type != AV_HWDEVICE_TYPE_NONE ) {
- int ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, 0, 0, 0);
+ int ret = 0;
+ if (drm_node_enc) {
+ ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, drm_node_enc, 0, 0);
+ } else {
+ ret = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_VAAPI, 0, 0, 0);
+ }
if( ret < 0 ) {
ff_err(ret, "Failed to create a HW device.\n");
type = AV_HWDEVICE_TYPE_NONE;
#ifndef COPYRIGHTTEXT2
#define COPYRIGHTTEXT2 ""
#endif
+#ifndef COPYRIGHTTEXT3
+#define COPYRIGHTTEXT3 ""
+#endif
+
fprintf(stderr, "%s %s - %s\n%s",
PROGRAM_NAME,CINELERRA_VERSION, AboutPrefs::build_timestamp,
REPOMAINTXT COPYRIGHTTEXT1 COPYRIGHTTEXT2);
+ fprintf(stderr, "%s", COPYRIGHTTEXT3);
+ fprintf(stderr, "%s", COPYRIGHTTEXT4);
+ fprintf(stderr,"\n");
+ fprintf(stderr, "%s \n", AboutPrefs::ffmpeg_version);
+ fprintf(stderr,"\n");
fprintf(stderr, "%s is free software, covered by the GNU General Public License,\n"
"and you are welcome to change it and/or distribute copies of it under\n"
"certain conditions. There is absolutely no warranty for %s.\n\n",
#ifndef __VERSIONINFO_H__
#define __VERSIONINFO_H__
+#include <libavcodec/avcodec.h>
+#define CINELERRA_LIBAV_VERSION "Libav version: " LIBAVCODEC_IDENT;
#define CINELERRA_VERSION "Infinity"
#define REPOMAINTXT "git://git.cinelerra-gg.org/goodguy/cinelerra.git\n"
#define COPYRIGHT_DATE "2019"
#define COPYRIGHTTEXT1 "(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams\n"
#define COPYRIGHTTEXT2 "2007-2020 mods for Cinelerra-GG by W.P.Morrow aka goodguy\n"
+#define COPYRIGHTTEXT3 "2003-2017 mods for Cinelerra-CV by CinelerraCV team\n"
+#define COPYRIGHTTEXT4 "2015-2023 mods for Cinelerra-GG by Cinelerra-GG team\n"
+
#undef COMPILEDATE
#endif
replaces any video on the track.
Loop video: Loop video by specifying the length of the region to
loop.
+Mirror: Mirror horizontal or vertical with the ability to
+ swap left to right or top to bottom. And if enable
+ reflection center checked, can vary X/Y centering.
Mandelbrot: Render a Mandelbrot fractal using Cuda.
Motion: Tracks translation and rotation motion to stabilize
shaky video.