Permalink
Browse files

Fix for ALSA ten second timeout on exit. Fix for volume/mute issues

Add fuzzy matching on hdmi modes with edid_format_smart_match
  • Loading branch information...
1 parent 4ec01c7 commit 7680bb38ee9fe1f4b156afbec11960f3e7edd388 @popcornmix popcornmix committed Aug 7, 2012
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
Binary file not shown.
Binary file not shown.
View
Binary file not shown.
View
@@ -1 +1 @@
-c6851e9ade0ea7135cd7bde2e92204d550439b64
+b6d5be452c1f10aa3b678d18252e4c2ac0a75878
Binary file not shown.
Binary file not shown.
@@ -25,13 +25,16 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// HDMI common host header for TV service, defines resolution code which host applications should
-// use for power up command for HDMI
-
+/*
+ * HDMI common host header for TV service, defines resolution code which host applications should
+ * use for power up command for HDMI
+ */
#ifndef _VC_HDMI_H_
#define _VC_HDMI_H_
+#include "vc_hdmi_property.h" /**< All HDMI related properties have been moved to here */
+
typedef int VC_HDMI_BOOL_T;
/**
@@ -100,19 +103,6 @@ typedef enum {
} HDMI_MODE_T;
/**
- * HDMI output pixel encoding
- */
-typedef enum {
- HDMI_PIXEL_ENCODING_RGB_LIMITED,
- HDMI_PIXEL_ENCODING_RGB_FULL,
- HDMI_PIXEL_ENCODING_YCbCr444_LIMITED,
- HDMI_PIXEL_ENCODING_YCbCr444_FULL,
- /** YCbCr 422 are not used at the moment */
- HDMI_PIXEL_ENCODING_YCbCr422_LIMITED,
- HDMI_PIXEL_ENCODING_YCbCr422_FULL
-} HDMI_PIXEL_ENCODING_T;
-
-/**
* Possible values for the Source Product Description type code (in SPD infoframe).
* Taken from the CEA-861 spec.
*/
@@ -143,29 +133,6 @@ typedef struct {
} HDMI_SPD_DATA_T;
/**
- * Properties settings for HDMI, which can be set prior to powering up HDMI.
- * These properties will persist once set.
- */
-
-/**
- * Pixel clock nudge factor
- */
-typedef enum {
- HDMI_PIXEL_CLOCK_TYPE_PAL = 0, /**< Use norminal pixel clock */
- HDMI_PIXEL_CLOCK_TYPE_NTSC = 1, /**< Multiply norminal pixel clock by 1000/1001 to get the alternative frame rate e.g. 59.94Hz rather than 60, not applicable to all formats */
-} HDMI_PIXEL_CLOCK_TYPE_T;
-
-/**
- * Property type
- */
-typedef enum {
- HDMI_PROPERTY_PIXEL_ENCODING = 0, /**< Set pixel encoding, value of property is HDMI_PIXEL_ENCODING_T, default is RGB full range (unless it is not supported) */
- HDMI_PROPERTY_PIXEL_CLOCK_TYPE = 1, /**< See HDMI_PIXEL_CLOCK_TYPE_T, default is HDMI_PIXEL_CLOCK_TYPE_PAL */
- HDMI_PROPERTY_CONTENT_TYPE = 2 /**< Set content type flag EDID_ContentType_T */
- //More properties later...
-} HDMI_PROPERTY_T;
-
-/**
* These are CEA mode numbers (sent in AVI infoframe) for different resolutions as define in CEA-861
* 1080i at 100/120Hz (40,46) are supported by HDMI H/W but note we cannot
* display the debug overlay under these modes.
@@ -446,18 +413,6 @@ typedef enum {
} EDID_AudioLFEFB;
/**
- * Content type: the enum is the actual value in AVI infoframe + 1
- * because NODATA and Graphics both have value zero
- */
-typedef enum {
- EDID_ContentType_NODATA = 0x0, /**<Content type none */
- EDID_ContentType_Graphics = 0x1, /**<Graphics, ITC must be set to 1 */
- EDID_ContentType_Photo = 0x2, /**<Photo */
- EDID_ContentType_Cinema = 0x3, /**<Cinema */
- EDID_ContentType_Game = 0x4 /**<Game */
-} EDID_ContentType_T;
-
-/**
* HDMI notifications (defined as a bit mask to be conveniently returned as a state),
* make sure this does not clash with the values in vc_sdtv.h
* SDTV notifications start at bit 16.
@@ -518,4 +473,19 @@ typedef enum {
*/
typedef void (*HDMI_CALLBACK_T)(void *client_p, VC_HDMI_NOTIFY_T reason, uint32_t param1, uint32_t param2);
+//TV service error return code
+typedef enum {
+ VC_HDMI_SUCCESS = 0, /** OK */
+ VC_HDMI_ERROR_FORMAT_UNSUPPORTED = 1, /** format not supported */
+ VC_HDMI_ERROR_INVALID_FORMAT = 2, /** invalid format */
+ VC_HDMI_ERROR_INVALID_PROPERTY = 3, /** invalid property */
+ VC_HDMI_ERROR_OUT_OF_RANGE = 4, /** invalid values passed to set property */
+ VC_HDMI_ERROR_INVALID_INFOFRAME = 5, /** invalid infoframe */
+} VC_HDMI_ERROR_T;
+
+ //Defines for backward code compatibilty (these were originally in hdmi.h)
+typedef VC_HDMI_ERROR_T HDMI_RESULT_T;
+#define HDMI_RESULT_SUCCESS (VC_HDMI_SUCCESS)
+#define HDMI_RESULT_FAILED (VC_HDMI_ERROR_FORMAT_UNSUPPORTED)
+
#endif
@@ -0,0 +1,104 @@
+/*
+Copyright (c) 2012 Broadcom Europe Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * This file contains all the properties one can set in HDMI
+ * Each property has up to two parameters corresponding to list of enums one can set via
+ * the set/get property function from TV service (HOST) or HDMI middleware API (Videocore)
+ * Each property also has a default value for these parameters. Please refer to
+ * individual properties for details.
+ */
+
+#ifndef _VC_HDMI_PROPERTY_H_
+#define _VC_HDMI_PROPERTY_H_
+
+/**
+ * Property type
+ */
+typedef enum {
+ HDMI_PROPERTY_PIXEL_ENCODING = 0, /**< Set pixel encoding, value of property is HDMI_PIXEL_ENCODING_T, default is RGB full range (unless it is not supported) */
+ HDMI_PROPERTY_PIXEL_CLOCK_TYPE = 1, /**< See HDMI_PIXEL_CLOCK_TYPE_T, default is HDMI_PIXEL_CLOCK_TYPE_PAL */
+ HDMI_PROPERTY_CONTENT_TYPE = 2, /**< Set content type flag EDID_ContentType_T */
+ HDMI_PROPERTY_FUZZY_MATCH = 3, /**< disable (0 - default) or enable (1) fuzzy format match */
+ //More properties to be added here
+ HDMI_PROPERTY_MAX /**< place holder */
+} HDMI_PROPERTY_T;
+
+/**
+ * PIXEL_ENCODING: param1: encoding type, param2: n/a
+ * Setting encoding type is subjected to support in EDID
+ */
+typedef enum {
+ HDMI_PIXEL_ENCODING_RGB_LIMITED = 0, /**<Default, note that CEA mode defaults to limited RGB limited but DMT modes always uses RGB full */
+ HDMI_PIXEL_ENCODING_RGB_FULL,
+ HDMI_PIXEL_ENCODING_YCbCr444_LIMITED,
+ HDMI_PIXEL_ENCODING_YCbCr444_FULL,
+ /** YCbCr 422 are not used at the moment */
+ HDMI_PIXEL_ENCODING_YCbCr422_LIMITED,
+ HDMI_PIXEL_ENCODING_YCbCr422_FULL,
+ HDMI_PIXEL_ENCODING_MAX /**<place holder */
+} HDMI_PIXEL_ENCODING_T;
+
+/**
+ * PIXEL_CLOCK_TYPE: param1: pixel clock type, param2: n/a
+ * Pixel clock nudge factor (set pixel clock type)
+ */
+typedef enum {
+ HDMI_PIXEL_CLOCK_TYPE_PAL = 0, /**< Use norminal pixel clock (default) */
+ HDMI_PIXEL_CLOCK_TYPE_NTSC = 1, /**< Multiply norminal pixel clock by 1000/1001 to get the alternative frame rate e.g. 59.94Hz rather than 60, not applicable to all formats */
+ HDMI_PIXEL_CLOCK_TYPE_MAX /**< place holder */
+} HDMI_PIXEL_CLOCK_TYPE_T;
+
+/**
+ * Content type: param1: EDID content type, param2: n/a
+ */
+/**
+ * Content type: the enum is the actual value in AVI infoframe + 1
+ * because NODATA and Graphics both have value zero
+ */
+typedef enum {
+ EDID_ContentType_NODATA = 0x0, /**<Content type none */
+ EDID_ContentType_Graphics = 0x1, /**<Graphics, ITC must be set to 1 */
+ EDID_ContentType_Photo = 0x2, /**<Photo */
+ EDID_ContentType_Cinema = 0x3, /**<Cinema */
+ EDID_ContentType_Game = 0x4, /**<Game */
+ EDID_ContentType_MAX /**<place holder */
+} EDID_ContentType_T;
+
+/**
+ * Fuzzy match: param1 zero (disabled) or non-zero (enabled), param2: n/a
+ * If enabled, match format in EDID based on resolutions and formats only
+ * Default is zero (disabled, so match on blanking periods and pixel clock)
+ * Set to non-zero to enable fuzzy match
+ */
+typedef enum {
+ EDID_FUZZY_MATCH_DISABLED = 0x0,
+ EDID_FUZZY_MATCH_ENABLED = 0x1,
+ EDID_FUZZY_MATCH_MAX
+} EDID_FuzzyMatch_T;
+
+#endif //_VC_HDMI_PROPERTY_H_
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View
Binary file not shown.
View
Binary file not shown.
@@ -25,13 +25,16 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// HDMI common host header for TV service, defines resolution code which host applications should
-// use for power up command for HDMI
-
+/*
+ * HDMI common host header for TV service, defines resolution code which host applications should
+ * use for power up command for HDMI
+ */
#ifndef _VC_HDMI_H_
#define _VC_HDMI_H_
+#include "vc_hdmi_property.h" /**< All HDMI related properties have been moved to here */
+
typedef int VC_HDMI_BOOL_T;
/**
@@ -100,19 +103,6 @@ typedef enum {
} HDMI_MODE_T;
/**
- * HDMI output pixel encoding
- */
-typedef enum {
- HDMI_PIXEL_ENCODING_RGB_LIMITED,
- HDMI_PIXEL_ENCODING_RGB_FULL,
- HDMI_PIXEL_ENCODING_YCbCr444_LIMITED,
- HDMI_PIXEL_ENCODING_YCbCr444_FULL,
- /** YCbCr 422 are not used at the moment */
- HDMI_PIXEL_ENCODING_YCbCr422_LIMITED,
- HDMI_PIXEL_ENCODING_YCbCr422_FULL
-} HDMI_PIXEL_ENCODING_T;
-
-/**
* Possible values for the Source Product Description type code (in SPD infoframe).
* Taken from the CEA-861 spec.
*/
@@ -143,29 +133,6 @@ typedef struct {
} HDMI_SPD_DATA_T;
/**
- * Properties settings for HDMI, which can be set prior to powering up HDMI.
- * These properties will persist once set.
- */
-
-/**
- * Pixel clock nudge factor
- */
-typedef enum {
- HDMI_PIXEL_CLOCK_TYPE_PAL = 0, /**< Use norminal pixel clock */
- HDMI_PIXEL_CLOCK_TYPE_NTSC = 1, /**< Multiply norminal pixel clock by 1000/1001 to get the alternative frame rate e.g. 59.94Hz rather than 60, not applicable to all formats */
-} HDMI_PIXEL_CLOCK_TYPE_T;
-
-/**
- * Property type
- */
-typedef enum {
- HDMI_PROPERTY_PIXEL_ENCODING = 0, /**< Set pixel encoding, value of property is HDMI_PIXEL_ENCODING_T, default is RGB full range (unless it is not supported) */
- HDMI_PROPERTY_PIXEL_CLOCK_TYPE = 1, /**< See HDMI_PIXEL_CLOCK_TYPE_T, default is HDMI_PIXEL_CLOCK_TYPE_PAL */
- HDMI_PROPERTY_CONTENT_TYPE = 2 /**< Set content type flag EDID_ContentType_T */
- //More properties later...
-} HDMI_PROPERTY_T;
-
-/**
* These are CEA mode numbers (sent in AVI infoframe) for different resolutions as define in CEA-861
* 1080i at 100/120Hz (40,46) are supported by HDMI H/W but note we cannot
* display the debug overlay under these modes.
@@ -446,18 +413,6 @@ typedef enum {
} EDID_AudioLFEFB;
/**
- * Content type: the enum is the actual value in AVI infoframe + 1
- * because NODATA and Graphics both have value zero
- */
-typedef enum {
- EDID_ContentType_NODATA = 0x0, /**<Content type none */
- EDID_ContentType_Graphics = 0x1, /**<Graphics, ITC must be set to 1 */
- EDID_ContentType_Photo = 0x2, /**<Photo */
- EDID_ContentType_Cinema = 0x3, /**<Cinema */
- EDID_ContentType_Game = 0x4 /**<Game */
-} EDID_ContentType_T;
-
-/**
* HDMI notifications (defined as a bit mask to be conveniently returned as a state),
* make sure this does not clash with the values in vc_sdtv.h
* SDTV notifications start at bit 16.
@@ -518,4 +473,19 @@ typedef enum {
*/
typedef void (*HDMI_CALLBACK_T)(void *client_p, VC_HDMI_NOTIFY_T reason, uint32_t param1, uint32_t param2);
+//TV service error return code
+typedef enum {
+ VC_HDMI_SUCCESS = 0, /** OK */
+ VC_HDMI_ERROR_FORMAT_UNSUPPORTED = 1, /** format not supported */
+ VC_HDMI_ERROR_INVALID_FORMAT = 2, /** invalid format */
+ VC_HDMI_ERROR_INVALID_PROPERTY = 3, /** invalid property */
+ VC_HDMI_ERROR_OUT_OF_RANGE = 4, /** invalid values passed to set property */
+ VC_HDMI_ERROR_INVALID_INFOFRAME = 5, /** invalid infoframe */
+} VC_HDMI_ERROR_T;
+
+ //Defines for backward code compatibilty (these were originally in hdmi.h)
+typedef VC_HDMI_ERROR_T HDMI_RESULT_T;
+#define HDMI_RESULT_SUCCESS (VC_HDMI_SUCCESS)
+#define HDMI_RESULT_FAILED (VC_HDMI_ERROR_FORMAT_UNSUPPORTED)
+
#endif
Oops, something went wrong.

0 comments on commit 7680bb3

Please sign in to comment.