Skip to content

Commit d2bac60

Browse files
committed
Merge branch 'release/1.0.1' into main
2 parents 1a78fa8 + 26e9b12 commit d2bac60

File tree

14 files changed

+560
-71
lines changed

14 files changed

+560
-71
lines changed

AVInput/AVInput.cpp

Lines changed: 108 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
#include <algorithm>
3232

3333
#define API_VERSION_NUMBER_MAJOR 1
34-
#define API_VERSION_NUMBER_MINOR 6
35-
#define API_VERSION_NUMBER_PATCH 0
34+
#define API_VERSION_NUMBER_MINOR 7
35+
#define API_VERSION_NUMBER_PATCH 1
3636

3737
#define HDMI 0
3838
#define COMPOSITE 1
@@ -48,6 +48,7 @@
4848
#define AVINPUT_METHOD_GET_EDID_VERSION "getEdidVersion"
4949
#define AVINPUT_METHOD_SET_EDID_ALLM_SUPPORT "setEdid2AllmSupport"
5050
#define AVINPUT_METHOD_GET_EDID_ALLM_SUPPORT "getEdid2AllmSupport"
51+
#define AVINPUT_METHOD_GET_HDMI_COMPATIBILITY_VERSION "getHdmiVersion"
5152
#define AVINPUT_METHOD_SET_MIXER_LEVELS "setMixerLevels"
5253
#define AVINPUT_METHOD_START_INPUT "startInput"
5354
#define AVINPUT_METHOD_STOP_INPUT "stopInput"
@@ -167,6 +168,10 @@ void AVInput::InitializeIARM()
167168
IARM_BUS_DSMGR_NAME,
168169
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS,
169170
dsAVStatusEventHandler));
171+
IARM_CHECK(IARM_Bus_RegisterEventHandler(
172+
IARM_BUS_DSMGR_NAME,
173+
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE,
174+
dsAVVideoModeEventHandler));
170175
IARM_CHECK(IARM_Bus_RegisterEventHandler(
171176
IARM_BUS_DSMGR_NAME,
172177
IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE,
@@ -203,6 +208,9 @@ void AVInput::DeinitializeIARM()
203208
IARM_BUS_DSMGR_NAME,
204209
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsAVStatusEventHandler));
205210
IARM_CHECK(IARM_Bus_RemoveEventHandler(
211+
IARM_BUS_DSMGR_NAME,
212+
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, dsAVVideoModeEventHandler));
213+
IARM_CHECK(IARM_Bus_RemoveEventHandler(
206214
IARM_BUS_DSMGR_NAME,
207215
IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, dsAviContentTypeEventHandler));
208216
}
@@ -223,6 +231,7 @@ void AVInput::RegisterAll()
223231
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_SET_MIXER_LEVELS), &AVInput::setMixerLevels, this);
224232
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_SET_EDID_ALLM_SUPPORT), &AVInput::setEdid2AllmSupportWrapper, this);
225233
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_GET_EDID_ALLM_SUPPORT), &AVInput::getEdid2AllmSupportWrapper, this);
234+
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_GET_HDMI_COMPATIBILITY_VERSION), &AVInput::getHdmiVersionWrapper, this);
226235
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_START_INPUT), &AVInput::startInput, this);
227236
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_STOP_INPUT), &AVInput::stopInput, this);
228237
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_SCALE_INPUT), &AVInput::setVideoRectangleWrapper, this);
@@ -748,17 +757,18 @@ void AVInput::AVInputStatusChange( int port , bool isPresented, int type)
748757
* @param[in] port HDMI In port id.
749758
* @param[dsVideoPortResolution_t] video resolution data
750759
*/
751-
void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution)
760+
void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution, int type)
752761
{
753762
LOGWARN("AVInputVideoModeUpdate [%d]", port);
754763

755764
JsonObject params;
756765
params["id"] = port;
757766
std::stringstream locator;
758-
locator << "hdmiin://localhost/deviceid/" << port;
759-
params["locator"] = locator.str();
767+
if(type == HDMI){
768+
769+
locator << "hdmiin://localhost/deviceid/" << port;
770+
switch(resolution.pixelResolution) {
760771

761-
switch(resolution.pixelResolution) {
762772
case dsVIDEO_PIXELRES_720x480:
763773
params["width"] = 720;
764774
params["height"] = 480;
@@ -773,8 +783,8 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
773783
params["width"] = 1280;
774784
params["height"] = 720;
775785
break;
776-
777-
case dsVIDEO_PIXELRES_1920x1080:
786+
787+
case dsVIDEO_PIXELRES_1920x1080:
778788
params["width"] = 1920;
779789
params["height"] = 1080;
780790
break;
@@ -793,10 +803,31 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
793803
params["width"] = 1920;
794804
params["height"] = 1080;
795805
break;
806+
}
807+
params["progressive"] = (!resolution.interlaced);
796808
}
809+
else if(type == COMPOSITE)
810+
{
811+
locator << "cvbsin://localhost/deviceid/" << port;
812+
switch(resolution.pixelResolution) {
813+
case dsVIDEO_PIXELRES_720x480:
814+
params["width"] = 720;
815+
params["height"] = 480;
816+
break;
817+
case dsVIDEO_PIXELRES_720x576:
818+
params["width"] = 720;
819+
params["height"] = 576;
820+
break;
821+
default:
822+
params["width"] = 720;
823+
params["height"] = 576;
824+
break;
825+
}
797826

798-
params["progressive"] = (!resolution.interlaced);
827+
params["progressive"] = false;
828+
}
799829

830+
params["locator"] = locator.str();
800831
switch(resolution.frameRate) {
801832
case dsVIDEO_FRAMERATE_24:
802833
params["frameRateN"] = 24000;
@@ -849,16 +880,17 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
849880

850881
void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
851882
{
852-
if(!AVInput::_instance)
853-
return;
883+
if(!AVInput::_instance)
884+
return;
854885

855-
if (IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE == eventId)
856-
{
857-
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
858-
int hdmi_in_port = eventData->data.hdmi_in_content_type.port;
859-
int avi_content_type = eventData->data.hdmi_in_content_type.aviContentType;
860-
LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE event port: %d, Content Type : %d", hdmi_in_port,avi_content_type);
861-
AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type);
886+
if (IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE == eventId)
887+
{
888+
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
889+
int hdmi_in_port = eventData->data.hdmi_in_content_type.port;
890+
int avi_content_type = eventData->data.hdmi_in_content_type.aviContentType;
891+
LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE event port: %d, Content Type : %d", hdmi_in_port,avi_content_type);
892+
893+
AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type);
862894
}
863895
}
864896

@@ -941,7 +973,17 @@ void AVInput::dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventI
941973
resolution.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced;
942974
resolution.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate;
943975
LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE event port: %d, pixelResolution: %d, interlaced : %d, frameRate: %d \n", hdmi_in_port,resolution.pixelResolution, resolution.interlaced, resolution.frameRate);
944-
AVInput::_instance->AVInputVideoModeUpdate(hdmi_in_port, resolution);
976+
AVInput::_instance->AVInputVideoModeUpdate(hdmi_in_port, resolution,HDMI);
977+
}
978+
else if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE == eventId) {
979+
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
980+
int composite_in_port = eventData->data.composite_in_video_mode.port;
981+
dsVideoPortResolution_t resolution = {};
982+
resolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution;
983+
resolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced;
984+
resolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate;
985+
LOGWARN("Received IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE event port: %d, pixelResolution: %d, interlaced : %d, frameRate: %d \n", composite_in_port,resolution.pixelResolution, resolution.interlaced, resolution.frameRate);
986+
AVInput::_instance->AVInputVideoModeUpdate(composite_in_port, resolution,COMPOSITE);
945987
}
946988
}
947989

@@ -1362,6 +1404,53 @@ uint32_t AVInput::setEdidVersionWrapper(const JsonObject& parameters, JsonObject
13621404
}
13631405
}
13641406

1407+
uint32_t AVInput::getHdmiVersionWrapper(const JsonObject& parameters, JsonObject& response)
1408+
{
1409+
LOGINFOMETHOD();
1410+
returnIfParamNotFound(parameters, "portId");
1411+
string sPortId = parameters["portId"].String();
1412+
int portId = 0;
1413+
1414+
try {
1415+
portId = stoi(sPortId);
1416+
}catch (const std::exception& err) {
1417+
LOGWARN("sPortId invalid paramater: %s ", sPortId.c_str());
1418+
returnResponse(false);
1419+
}
1420+
1421+
dsHdmiMaxCapabilityVersion_t hdmiCapVersion = HDMI_COMPATIBILITY_VERSION_14;
1422+
1423+
try {
1424+
device::HdmiInput::getInstance().getHdmiVersion(portId, &(hdmiCapVersion));
1425+
LOGWARN("AVInput::getHdmiVersion Hdmi Version:%d", hdmiCapVersion);
1426+
}
1427+
catch (const device::Exception& err) {
1428+
LOG_DEVICE_EXCEPTION1(std::to_string(portId));
1429+
returnResponse(false);
1430+
}
1431+
1432+
1433+
switch ((int)hdmiCapVersion){
1434+
case HDMI_COMPATIBILITY_VERSION_14:
1435+
response["HdmiCapabilityVersion"] = "1.4";
1436+
break;
1437+
case HDMI_COMPATIBILITY_VERSION_20:
1438+
response["HdmiCapabilityVersion"] = "2.0";
1439+
break;
1440+
case HDMI_COMPATIBILITY_VERSION_21:
1441+
response["HdmiCapabilityVersion"] = "2.1";
1442+
break;
1443+
}
1444+
1445+
1446+
if(hdmiCapVersion == HDMI_COMPATIBILITY_VERSION_MAX)
1447+
{
1448+
returnResponse(false);
1449+
}else{
1450+
returnResponse(true);
1451+
}
1452+
}
1453+
13651454
int AVInput::setEdidVersion(int iPort, int iEdidVer)
13661455
{
13671456
bool ret = true;

AVInput/AVInput.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC
8585
uint32_t getSupportedGameFeatures(const JsonObject& parameters, JsonObject& response);
8686
uint32_t getGameFeatureStatusWrapper(const JsonObject& parameters, JsonObject& response);
8787
uint32_t setMixerLevels(const JsonObject& parameters, JsonObject& response);
88+
uint32_t getHdmiVersionWrapper(const JsonObject& parameters, JsonObject& response);
8889
//End methods
8990

9091
JsonArray getInputDevices(int iType);
@@ -106,7 +107,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC
106107
void AVInputStatusChange( int port , bool isPresented, int type);
107108
static void dsAVStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
108109

109-
void AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution);
110+
void AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution,int type);
110111
static void dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
111112

112113
void AVInputALLMChange( int port , bool allmMode);

AVInput/CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,18 @@ All notable changes to this RDK Service will be documented in this file.
1414

1515
* Changes in CHANGELOG should be updated when commits are added to the main or release branches. There should be one CHANGELOG entry per JIRA Ticket. This is not enforced on sprint branches since there could be multiple changes for the same JIRA ticket during development.
1616

17+
## [1.7.1] - 2025-02-17
18+
### Changed
19+
- Added support for handling the videoStreamInfoUpdate for composite Input.
20+
21+
## [1.7.0] - 2025-02-17
22+
### Added
23+
- Added support for Getting the Maximum HDMI Compatibility version for the given port.
24+
25+
## [1.0.0] - 2025-02-17
26+
### Added
27+
- Add CHANGELOG
28+
29+
### Change
30+
- Reset API version to 1.0.0
31+
- Change README to inform how to update changelog and API version

AVOutput/AVOutputTV.cpp

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -375,13 +375,6 @@ namespace Plugin {
375375
}
376376
else {
377377
LOGINFO("Platform Init successful...\n");
378-
ret = TvSyncCalibrationInfoODM();
379-
if(ret != tvERROR_NONE) {
380-
LOGERR(" SD3 <->cri_data sync failed, ret: %s \n", getErrorString(ret).c_str());
381-
}
382-
else {
383-
LOGERR(" SD3 <->cri_data sync success, ret: %s \n", getErrorString(ret).c_str());
384-
}
385378
}
386379

387380
tvVideoFormatCallbackData callbackData = {this,tvVideoFormatChangeHandler};
@@ -2282,17 +2275,22 @@ namespace Plugin {
22822275
{
22832276

22842277
LOGINFO("Entry\n");
2285-
pic_modes_t *dvModes;
2278+
tvDolbyMode_t dvModes[tvMode_Max];
2279+
tvDolbyMode_t *dvModesPtr = dvModes; // Pointer to statically allocated tvDolbyMode_t array
22862280
unsigned short totalAvailable = 0;
2287-
tvError_t ret = GetTVSupportedDolbyVisionModesODM(&dvModes,&totalAvailable);
2281+
2282+
// Set an initial value to indicate the mode type
2283+
dvModes[0] = tvDolbyMode_Dark;
2284+
2285+
tvError_t ret = GetTVSupportedDolbyVisionModes(&dvModesPtr, &totalAvailable);
22882286
if(ret != tvERROR_NONE) {
22892287
returnResponse(false);
22902288
}
22912289
else {
22922290
JsonArray SupportedDVModes;
22932291

22942292
for(int count = 0;count <totalAvailable;count++ ) {
2295-
SupportedDVModes.Add(dvModes[count].name);
2293+
SupportedDVModes.Add(getDolbyModeStringFromEnum(dvModes[count]));
22962294
}
22972295

22982296
response["supportedDVModes"] = SupportedDVModes;
@@ -2376,7 +2374,7 @@ namespace Plugin {
23762374

23772375
if( isSetRequired("Current",source,"DV") ) {
23782376
LOGINFO("Proceed with setDolbyVisionMode\n\n");
2379-
ret = SetTVDolbyVisionModeODM(value.c_str());
2377+
ret = SetTVDolbyVisionMode(GetDolbyVisionEnumFromModeString(value.c_str()));
23802378
}
23812379

23822380
if(ret != tvERROR_NONE) {
@@ -2437,7 +2435,7 @@ namespace Plugin {
24372435
if( err == 0 ) {
24382436
std::string dolbyModeValue = getDolbyModeStringFromEnum((tvDolbyMode_t)dolbyMode);
24392437
LOGINFO("%s : getLocalparam success format :%d source : %d format : %d dolbyvalue : %s\n",__FUNCTION__,formatIndex, sourceIndex, pqIndex, dolbyModeValue.c_str());
2440-
ret = SetTVDolbyVisionModeODM(dolbyModeValue.c_str());
2438+
ret = SetTVDolbyVisionMode((tvDolbyMode_t)dolbyMode);
24412439
}
24422440
else {
24432441
LOGERR("%s : GetLocalParam Failed \n",__FUNCTION__);
@@ -2716,11 +2714,9 @@ namespace Plugin {
27162714
returnResponse(false);
27172715
}
27182716

2719-
std::string local = value;
2720-
transform(local.begin(), local.end(), local.begin(), ::tolower);
27212717
if( isSetRequired("Current",source,format) ) {
27222718
LOGINFO("Proceed with SetTVPictureMode\n");
2723-
ret = SetTVPictureMode(local.c_str());
2719+
ret = SetTVPictureMode(value.c_str());
27242720
}
27252721
if(ret != tvERROR_NONE) {
27262722
returnResponse(false);
@@ -2824,21 +2820,17 @@ namespace Plugin {
28242820
if ( tr181Success == err ) {
28252821
//get curren source and if matches save for that alone
28262822
tvVideoSrcType_t current_source = VIDEO_SOURCE_IP;
2827-
GetCurrentSource(&current_source);
2823+
GetCurrentVideoSource(&current_source);
28282824

28292825
tvVideoFormatType_t current_format = VIDEO_FORMAT_NONE;
28302826
GetCurrentVideoFormat(&current_format);
28312827
if( current_format == VIDEO_FORMAT_NONE) {
28322828
current_format = VIDEO_FORMAT_SDR;
28332829
}
28342830

2835-
//as hal using lower across converting to lower
2836-
std::string setparam = param.value;
2837-
transform(setparam.begin(), setparam.end(), setparam.begin(), ::tolower);
2838-
28392831
if (current_source == sourceType && current_format == formatType) {
28402832

2841-
tvError_t ret = SetTVPictureMode(setparam.c_str());
2833+
tvError_t ret = SetTVPictureMode(param.value);
28422834
if(ret != tvERROR_NONE) {
28432835
LOGWARN("Picture Mode set failed: %s\n",getErrorString(ret).c_str());
28442836
returnResponse(false);
@@ -3083,7 +3075,7 @@ namespace Plugin {
30833075
LOGINFO("Entry\n");
30843076
tvVideoSrcType_t currentSource = VIDEO_SOURCE_IP;
30853077

3086-
tvError_t ret = GetCurrentSource(&currentSource);
3078+
tvError_t ret = GetCurrentVideoSource(&currentSource);
30873079
if(ret != tvERROR_NONE) {
30883080
response["currentVideoSource"] = "NONE";
30893081
returnResponse(false);

0 commit comments

Comments
 (0)