Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_writeffmpeg.h1
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c20
-rw-r--r--source/blender/makesrna/intern/rna_scene.c2
3 files changed, 20 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_writeffmpeg.h b/source/blender/blenkernel/BKE_writeffmpeg.h
index 299f8e185cf..c35105f7b8b 100644
--- a/source/blender/blenkernel/BKE_writeffmpeg.h
+++ b/source/blender/blenkernel/BKE_writeffmpeg.h
@@ -75,6 +75,7 @@ void filepath_ffmpeg(char* string, struct RenderData* rd);
extern void ffmpeg_set_preset(struct RenderData *rd, int preset);
extern void ffmpeg_verify_image_type(struct RenderData *rd, struct ImageFormatData *imf);
extern void ffmpeg_verify_codec_settings(struct RenderData *rd);
+extern int ffmpeg_alpha_channel_supported(struct RenderData *rd);
extern struct IDProperty *ffmpeg_property_add(struct RenderData *Rd, const char *type, int opt_index, int parent_index);
extern int ffmpeg_property_add_string(struct RenderData *rd, const char *type, const char *str);
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index e9f7823dfe8..2291ea5a249 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -506,12 +506,21 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
}
// Keep lossless encodes in the RGB domain.
- if (codec_id == CODEC_ID_HUFFYUV || codec_id == CODEC_ID_FFV1) {
+ if (codec_id == CODEC_ID_HUFFYUV) {
/* HUFFYUV was PIX_FMT_YUV422P before */
c->pix_fmt = PIX_FMT_RGB32;
}
- if ( codec_id == CODEC_ID_QTRLE ) {
+ if (codec_id == CODEC_ID_FFV1) {
+ if (rd->im_format.planes == R_IMF_PLANES_RGBA) {
+ c->pix_fmt = PIX_FMT_RGB32;
+ }
+ else {
+ c->pix_fmt = PIX_FMT_BGR0;
+ }
+ }
+
+ if (codec_id == CODEC_ID_QTRLE ) {
if (rd->im_format.planes == R_IMF_PLANES_RGBA) {
c->pix_fmt = PIX_FMT_ARGB;
}
@@ -1422,4 +1431,11 @@ void ffmpeg_verify_codec_settings(RenderData *rd)
ffmpeg_set_expert_options(rd);
}
+int ffmpeg_alpha_channel_supported(RenderData *rd)
+{
+ int codec = rd->ffcodecdata.codec;
+
+ return ELEM(codec, CODEC_ID_QTRLE, CODEC_ID_FFV1);
+}
+
#endif
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 8483478838d..cd20f4fceed 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -722,7 +722,7 @@ static EnumPropertyItem *rna_ImageFormatSettings_color_mode_itemf(bContext *C, P
Scene *scene = ptr->id.data;
RenderData *rd = &scene->r;
- if (rd->ffcodecdata.codec == CODEC_ID_QTRLE)
+ if (ffmpeg_alpha_channel_supported(rd))
chan_flag |= IMA_CHAN_FLAG_ALPHA;
}
#endif