We spend a considerable amount of time in Installment 026 discussing the growth of HDMI and digital interconnects as the only high definition connectivity option available in about a year, especially for Blu-ray players. Of course, current equipment still should play as it does now (unless it potentially gets a firmware update that changes that), but we, as integrators, need to design and implement for the future.
The HDMI Licensing, LLC recently released the 3-D related parts of the HDMI 1.4a specifications to the public (http://www.hdmi.org/press/press_release.aspx?prid=119). There are two key areas covered in this release. One aspect defines the mandatory 3-D formats that a 1.4a sink device MUST support to be compliant:
For movie content:
Frame Packing
1080p @ 23.98/24Hz
For game content:
Frame Packing
720p @ 50 or 59.94/60Hz
For broadcast content:
Side-by-Side Horizontal
1080i @ 50 or 59.94/60Hz
Top-and-Bottom
720p @ 50 or 59.94/60Hz
1080p @ 23.97/24Hz
I ran across this chart that I think graphically depicts these fairly well
Note that this focuses on guaranteeing interoperability from the sink (display) side of the chain. For the source, it must support AT LEAST ONE of these formats. This ensures the source device will be able to send a 3-D stream to the display and the display will be able to render it.
The last component of the equation defined in the specification relates to HDMI repeaters (receivers and HDMI Matrix Switchers). They must pass the 3-D stream from the source to the sink and leave the 3-D parameters of the image intact. Essentially, this means that HDMI 1.4a compliant components will be able to play 3-D content from broadcast, gaming, and physical media sources. Potentially, HDMI 1.3 devices could be upgraded to provide or render the content too, but there is no guarantee. Even if these upgrades do allow for 3-D, they may not support all formats. Most of those announced so far are for source devices. Very few companies have talked about upgrading their displays at all. Some of the better HDMI Matrix Switchers may be transparent to the 3-D streams, but it is too early to tell. Take the time to understand technically what the devices are capable of supporting before setting expectations for your clients.
3-D VIDEO TIMING
What these formats really define at the “video level” are timing diagrams for how the video stream is to be generated and interpreted. We often talk about bits being sent across the wire, but, from a video perspective, it really is about the timing of those bits in relation to how the video signal is displayed (think of the way that analog CRTs displayed video).
For a Side by Side (half resolution per eye image) 3D_Structure, the timing is defined as
Notice the familiar analog horizontal and vertical blanking intervals that a “normal” 2-D video stream would have. This matches up to the way that DIRECTV has announced they are providing 3-D for their channels.
One of the other mandatory broadcast formats is Top/Bottom, whose video stream timing is defined as
Formats also are defined for formats like Frame Packing (progressive scan in this case), which changes the video timing considerably
In this figure, there is an area inserted between the two active video regions designated as “Active Space”. This Active Space area is encoded the same as in the adjoining Active Video Regions. However, during the Active Space, an HDMI source transmits a constant pixel value. HDMI sinks ignore all of the data received during the Active Space. There also is a non-interlaced definition for Frame Packing, but you get the idea by now.
HDMI INFOFRAME 3-D STRUCTURES IN HDMI 1.4
There is another aspect of the HDMI 1.4a specification that is not talked about much. It relates to the InfoFrames within the video stream itself that identifies the actual type of 3-D format being used for a specific piece of content. To me, this is the real heart of 3-D interoperability and is key to understanding how the “3-D handshaking process” works.
Imagine that you are watching a show on a channel that uses Side by Side 3-D formatting and you then change to a channel that is encoded using the Top/Bottom format. How does the sink (display) know how to render the video stream? That is what InfoFrames provide. It is a way to identify, within the video stream itself, how the 3-D content is to be rendered. It is transmitted twice per video frame and potentially is dynamic (it may change when there is a commercial inserted into the stream).
InfoFrame 3D_Structure Values
ValueMeaning
0000Frame packing
0001Field alternative
0010Line alternative
0011Side-by-Side (Full)
0100L + depth
0101L + depth + graphics + graphics-depth
0110 ~ 0111Reserved for future use.
1000Side-by-Side (Half)
1001 ~ 1111Reserved for future use.
These values are closely related to the CEA-861-B formats for the Vendor Specific Data Block (VSDB) defined in HDMI, but they actually are a proprietary format that the CEA allows HDMI to use within their specifications. The inter-relationships of these standards is a little convoluted behind the scenes, but the bottom line is that the HDMI 1.4a specifications allow for true 3-D interoperability and functionality at the video stream level.
The ability to support 3-D formats is included in the EDID sent from the sink during the handshaking initialization process, but we will cover that aspect in Installment 028. Stay tuned.
All of this is designed to be transparent to the users and should be transparent to the installers as well, but like everything else on this Podcast, we like to shed some light on how things work on the wire so that you can deliver better and more reliable solutions to your clients.
BACK TO OUR DISCUSSIONS ON HDMI CEC
We do finally get back onto our topic of the Consumer Electronics Control (CEC) features of HDMI and wrap up the series on that. We discuss the actual “byte code” command set of CEC and how that pertains to the usage scenarios covered previously.
These commands are sent to the specific devices using the CEC addressing scheme we outlined in our previous two Installments.
CEC COMMAND SET (Individual Commands)
Operation ID – User Operation
Operation ID – User Operation
Operation ID – User Operation
0x00 Select
0x32 Previous Channel
0x50 Angle
0x01 Up
0x33 Sound Select
0x51 Sub picture
0x02 Down
0x34 Input Select
0x52 – 0x5F Reserved
0x03 Left
0x35 Display Information
0x60 Play Function
0x04 Right
0x36 Help
0x61 Pause-Play Function
0x05 Right-Up
0x37 Page Up
0x62 Record Function
0x06 Right-Down
0x38 Page Down
0x63 Pause-Record Function
0x07 Left-Up
0x39 – 0x3F Reserved
0x64 Stop Function
0x08 Left-Down
0x40 Power
0x65 Mute Function
0x09 Root Menu
0x41 Volume Up
0x66 Restore Volume Function
0x0A Setup Menu
0x42 Volume Down
0x67 Tune Function
0x0B Contents Menu
0x43 Mute
0x68 Select Disk Function
0x0C Favorite Menu
0x44 Play
0x69 Select A/V Input Function
0x0D Exit
0x45 Stop
0x6A Select Audio Input Function
0x0E – 0x1F Reserved
0x46 Pause
0x6B – 0x70 Reserved
0x20 – 0x29 Numbers 0-9
0x47 Record
0x71 F1 (Blue)
0x2A Dot
0x48 Rewind
0x72 F2 (Red)
0x2B Enter
0x49 Fast forward
0x73 F3 (Green)
0x2C Clear
0x4A Eject
0x74 F4 (Yellow)
0x2D – 0x2F Reserved
0x4B Forward
0x75 F5
0x30 Channel Up
0x4C Backward
0x76 – 0x7F Reserved
0x31 Channel Down
0x4D – 0x4F Reserved
As you can see, there is quite a bit of flexibility afforded by the CEC infrastructure for the command and control of a wide variety of devices using a standardized language. It appears to be so much simpler than what we have to deal with when using IR codes and RS-232 commands. I really wish vendors would start leveraging CEC’s capabilities more because it is an awesome platform that already exists within the majority of HDMI products currently on the market.
I often wonder why, if these commands are standardized across products, vendors chose to only support CEC functionality on their own products. Listen to the Podcast for some insights there. Fortunately, that trend is changing and we should start being able to reap the benefits in the next wave of HDMI (and 3-D) based devices.
Hopefully, the pieces of the CEC puzzle now start to make sense.
{"id":null,"mode":"button","open_style":"in_place","currency_code":"GBP","currency_symbol":"\u00a3","currency_type":"decimal","blank_flag_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"none","featured_image_url":false,"featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"TheDigitalLifestyle.com","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"TheDigitalLifestyle.com","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for being a supporter!","payment_confirmation_title":"TheDigitalLifestyle.com","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}