]> git.sesse.net Git - vlc/blobdiff - include/vlc_es.h
l10n: Initial Catalan (Valencian) translation
[vlc] / include / vlc_es.h
index 38d63da94b24a207fd5dff3cac8d3261a46c3791..5790d2343b22322d1f5e4965697dbc3d5a0e378c 100644 (file)
@@ -25,6 +25,7 @@
 #define VLC_ES_H 1
 
 #include <vlc_fourcc.h>
+#include <vlc_text_style.h>
 
 /**
  * \file
  * \see video_format_t
  * \see subs_format_t
  */
+#define VIDEO_PALETTE_COLORS_MAX 256
+
 struct video_palette_t
 {
     int i_entries;      /**< to keep the compatibility with libavcodec's palette */
-    uint8_t palette[256][4];                   /**< 4-byte RGBA/YUVA palette */
+    uint8_t palette[VIDEO_PALETTE_COLORS_MAX][4];  /**< 4-byte RGBA/YUVA palette */
 };
 
 /**
@@ -153,6 +156,8 @@ typedef enum video_orientation_t
     ORIENT_RIGHT_BOTTOM, /**< Anti-transposed */
 
     ORIENT_NORMAL      = ORIENT_TOP_LEFT,
+    ORIENT_TRANSPOSED  = ORIENT_LEFT_TOP,
+    ORIENT_ANTI_TRANSPOSED = ORIENT_RIGHT_BOTTOM,
     ORIENT_HFLIPPED    = ORIENT_TOP_RIGHT,
     ORIENT_VFLIPPED    = ORIENT_BOTTOM_LEFT,
     ORIENT_ROTATED_180 = ORIENT_BOTTOM_RIGHT,
@@ -174,6 +179,18 @@ typedef enum video_orientation_t
 /** Applies horizontal flip to an orientation */
 #define ORIENT_ROTATE_180(orient) ((orient) ^ 3)
 
+typedef enum video_transform_t
+{
+    TRANSFORM_IDENTITY       = ORIENT_NORMAL,
+    TRANSFORM_HFLIP          = ORIENT_HFLIPPED,
+    TRANSFORM_VFLIP          = ORIENT_VFLIPPED,
+    TRANSFORM_R180           = ORIENT_ROTATED_180,
+    TRANSFORM_R270           = ORIENT_ROTATED_270,
+    TRANSFORM_R90            = ORIENT_ROTATED_90,
+    TRANSFORM_TRANSPOSE      = ORIENT_TRANSPOSED,
+    TRANSFORM_ANTI_TRANSPOSE = ORIENT_ANTI_TRANSPOSED
+} video_transform_t;
+
 /**
  * video format description
  */
@@ -264,6 +281,28 @@ VLC_API void video_format_CopyCrop( video_format_t *, const video_format_t * );
  */
 VLC_API void video_format_ScaleCropAr( video_format_t *, const video_format_t * );
 
+/**
+ * This function "normalizes" the formats orientation, by switching the a/r according to the orientation,
+ * producing a format whose orientation is ORIENT_NORMAL. It makes a shallow copy (pallette is not alloc'ed).
+ */
+VLC_API void video_format_ApplyRotation(video_format_t *restrict out, const video_format_t *restrict in);
+
+/**
+ * This function applies the transform operation to fmt.
+ */
+VLC_API void video_format_TransformBy(video_format_t *fmt, video_transform_t transform);
+
+/**
+ * This function applies the transforms necessary to fmt so that the resulting fmt
+ * has the dst_orientation.
+ */
+VLC_API void video_format_TransformTo(video_format_t *fmt, video_orientation_t dst_orientation);
+
+/**
+ * Returns the operation required to transform src into dst.
+ */
+VLC_API video_transform_t video_format_GetTransform(video_orientation_t src, video_orientation_t dst);
+
 /**
  * This function will check if the first video format is similar
  * to the second one.
@@ -275,6 +314,18 @@ VLC_API bool video_format_IsSimilar( const video_format_t *, const video_format_
  */
 VLC_API void video_format_Print( vlc_object_t *, const char *, const video_format_t * );
 
+
+static inline video_transform_t transform_Inverse( video_transform_t transform )
+{
+    switch ( transform ) {
+        case TRANSFORM_R90:
+            return TRANSFORM_R270;
+        case TRANSFORM_R270:
+            return TRANSFORM_R90;
+        default:
+            return transform;
+    }
+}
 /**
  * subtitles format description
  */
@@ -308,6 +359,8 @@ struct subs_format_t
         int i_magazine;
         int i_page;
     } teletext;
+
+    text_style_t *p_style; /* Default styles to use */
 };
 
 /**
@@ -369,11 +422,12 @@ struct es_format_t
 enum es_format_category_e
 {
     UNKNOWN_ES = 0x00,
-    VIDEO_ES   = 0x01,
-    AUDIO_ES   = 0x02,
-    SPU_ES     = 0x03,
-    NAV_ES     = 0x04,
+    VIDEO_ES,
+    AUDIO_ES,
+    SPU_ES,
+    NAV_ES,
 };
+#define ES_CATEGORY_COUNT (NAV_ES + 1)
 
 /**
  * This function will fill all RGB shift from RGB masks.