diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c index 6e2978468a..81251a03b0 100644 --- a/gst/interlace/gstinterlace.c +++ b/gst/interlace/gstinterlace.c @@ -126,7 +126,13 @@ typedef enum GST_INTERLACE_PATTERN_2_2, GST_INTERLACE_PATTERN_2_3, GST_INTERLACE_PATTERN_2_3_3_2, - GST_INTERLACE_PATTERN_EURO + GST_INTERLACE_PATTERN_EURO, + GST_INTERLACE_PATTERN_3_4R3, + GST_INTERLACE_PATTERN_3R7_4, + GST_INTERLACE_PATTERN_3_3_4, + GST_INTERLACE_PATTERN_3_3, + GST_INTERLACE_PATTERN_3_2R4, + GST_INTERLACE_PATTERN_1_2R4, } GstInterlacePattern; #define GST_INTERLACE_PATTERN (gst_interlace_pattern_get_type ()) @@ -142,6 +148,14 @@ gst_interlace_pattern_get_type (void) "2:3:3:2"}, {GST_INTERLACE_PATTERN_EURO, "Euro 2-11:3 (e.g. 24p -> 50i telecine)", "2-11:3"}, + {GST_INTERLACE_PATTERN_3_4R3, "3:4-3 (e.g. 16p -> 60i telecine)", "3:4-3"}, + {GST_INTERLACE_PATTERN_3R7_4, "3-7:4 (e.g. 16p -> 50i telecine)", "3-7:4"}, + {GST_INTERLACE_PATTERN_3_3_4, "3:3:4 (e.g. 18p -> 60i telecine)", "3:3:4"}, + {GST_INTERLACE_PATTERN_3_3, "3:3 (e.g. 20p -> 60i telecine)", "3:3"}, + {GST_INTERLACE_PATTERN_3_2R4, "3:2-4 (e.g. 27.5p -> 60i telecine)", + "3:2-4"}, + {GST_INTERLACE_PATTERN_1_2R4, "1:2-4 (e.g. 27.5p -> 50i telecine)", + "1:2-4"}, {0, NULL, NULL} }; @@ -301,7 +315,19 @@ static const PulldownFormat formats[] = { {"2:3", 5, 4, {2, 3,}}, {"2:3:3:2", 5, 4, {2, 3, 3, 2,}}, /* 24p -> 50i Euro pulldown */ - {"2-11:3", 25, 24, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,}} + {"2-11:3", 25, 24, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,}}, + /* 16p (16000/1001) -> 60i (NTSC 30000/1001) */ + {"3:4-3", 15, 8, {3, 4, 4, 4,}}, + /* 16p -> 50i (PAL) */ + {"3-7:4", 25, 16, {3, 3, 3, 3, 3, 3, 3, 4,}}, + /* 18p to NTSC 60i */ + {"3:3:4", 5, 3, {3, 3, 4,}}, + /* 20p to NTSC 60i */ + {"3:3", 3, 2, {3, 3,}}, + /* 27.5 to NTSC 60i */ + {"3:2-4", 11, 10, {3, 2, 2, 2, 2,}}, + /* 27.5 to PAL 50i */ + {"1:2-4", 9, 10, {1, 2, 2, 2, 2,}}, }; static void