Skip to content

Commit b89381b

Browse files
aishwariya15ababu250
authored andcommitted
Composite VideoMode update
1 parent e3e8037 commit b89381b

File tree

4 files changed

+165
-18
lines changed

4 files changed

+165
-18
lines changed

AVInput/AVInput.cpp

Lines changed: 56 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ void AVInput::InitializeIARM()
168168
IARM_BUS_DSMGR_NAME,
169169
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS,
170170
dsAVStatusEventHandler));
171+
IARM_CHECK(IARM_Bus_RegisterEventHandler(
172+
IARM_BUS_DSMGR_NAME,
173+
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE,
174+
dsAVVideoModeEventHandler));
171175
IARM_CHECK(IARM_Bus_RegisterEventHandler(
172176
IARM_BUS_DSMGR_NAME,
173177
IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE,
@@ -204,6 +208,9 @@ void AVInput::DeinitializeIARM()
204208
IARM_BUS_DSMGR_NAME,
205209
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsAVStatusEventHandler));
206210
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(
207214
IARM_BUS_DSMGR_NAME,
208215
IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, dsAviContentTypeEventHandler));
209216
}
@@ -750,17 +757,18 @@ void AVInput::AVInputStatusChange( int port , bool isPresented, int type)
750757
* @param[in] port HDMI In port id.
751758
* @param[dsVideoPortResolution_t] video resolution data
752759
*/
753-
void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution)
760+
void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution, int type)
754761
{
755762
LOGWARN("AVInputVideoModeUpdate [%d]", port);
756763

757764
JsonObject params;
758765
params["id"] = port;
759766
std::stringstream locator;
760-
locator << "hdmiin://localhost/deviceid/" << port;
761-
params["locator"] = locator.str();
767+
if(type == HDMI){
768+
769+
locator << "hdmiin://localhost/deviceid/" << port;
770+
switch(resolution.pixelResolution) {
762771

763-
switch(resolution.pixelResolution) {
764772
case dsVIDEO_PIXELRES_720x480:
765773
params["width"] = 720;
766774
params["height"] = 480;
@@ -776,7 +784,7 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
776784
params["height"] = 720;
777785
break;
778786

779-
case dsVIDEO_PIXELRES_1920x1080:
787+
case dsVIDEO_PIXELRES_1920x1080:
780788
params["width"] = 1920;
781789
params["height"] = 1080;
782790
break;
@@ -795,10 +803,31 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
795803
params["width"] = 1920;
796804
params["height"] = 1080;
797805
break;
806+
}
807+
params["progressive"] = (!resolution.interlaced);
798808
}
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+
}
799826

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

830+
params["locator"] = locator.str();
802831
switch(resolution.frameRate) {
803832
case dsVIDEO_FRAMERATE_24:
804833
params["frameRateN"] = 24000;
@@ -851,16 +880,17 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
851880

852881
void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
853882
{
854-
if(!AVInput::_instance)
855-
return;
883+
if(!AVInput::_instance)
884+
return;
856885

857-
if (IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE == eventId)
858-
{
859-
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
860-
int hdmi_in_port = eventData->data.hdmi_in_content_type.port;
861-
int avi_content_type = eventData->data.hdmi_in_content_type.aviContentType;
862-
LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE event port: %d, Content Type : %d", hdmi_in_port,avi_content_type);
863-
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);
864894
}
865895
}
866896

@@ -943,7 +973,17 @@ void AVInput::dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventI
943973
resolution.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced;
944974
resolution.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate;
945975
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);
946-
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);
947987
}
948988
}
949989

AVInput/AVInput.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC
107107
void AVInputStatusChange( int port , bool isPresented, int type);
108108
static void dsAVStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
109109

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

113113
void AVInputALLMChange( int port , bool allmMode);

CompositeInput/CompositeInput.cpp

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#define COMPOSITEINPUT_EVENT_ON_DEVICES_CHANGED "onDevicesChanged"
4343
#define COMPOSITEINPUT_EVENT_ON_SIGNAL_CHANGED "onSignalChanged"
4444
#define COMPOSITEINPUT_EVENT_ON_STATUS_CHANGED "onInputStatusChanged"
45+
#define COMPOSITEINPUT_EVENT_ON_VIDEO_MODE_UPDATED "videoStreamInfoUpdate"
4546

4647
namespace WPEFramework
4748
{
@@ -103,6 +104,7 @@ namespace WPEFramework
103104
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, dsCompositeEventHandler) );
104105
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, dsCompositeSignalStatusEventHandler) );
105106
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsCompositeStatusEventHandler) );
107+
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE,dsCompositeVideoModeEventHandler) );
106108
}
107109
}
108110

@@ -114,6 +116,7 @@ namespace WPEFramework
114116
IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, dsCompositeEventHandler) );
115117
IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, dsCompositeSignalStatusEventHandler) );
116118
IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsCompositeStatusEventHandler) );
119+
IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, dsCompositeVideoModeEventHandler) );
117120
}
118121
}
119122

@@ -361,6 +364,89 @@ namespace WPEFramework
361364

362365
sendNotify(COMPOSITEINPUT_EVENT_ON_STATUS_CHANGED, params);
363366
}
367+
/**
368+
* @brief This function is used to translate Composite input video mode change to
369+
* videoStreamInfoUpdate event.
370+
*
371+
* @param[in] port Composite In port id.
372+
* @param[dsVideoPortResolution_t] video resolution data
373+
*/
374+
void CompositeInput::compositeInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution)
375+
{
376+
LOGWARN("compositeInputVideoModeUpdate [%d]", port);
377+
378+
JsonObject params;
379+
params["id"] = port;
380+
std::stringstream locator;
381+
locator << "cvbsin://localhost/deviceid/" << port;
382+
params["locator"] = locator.str();
383+
384+
switch(resolution.pixelResolution) {
385+
case dsVIDEO_PIXELRES_720x480:
386+
params["width"] = 720;
387+
params["height"] = 480;
388+
break;
389+
case dsVIDEO_PIXELRES_720x576:
390+
params["width"] = 720;
391+
params["height"] = 576;
392+
break;
393+
default:
394+
params["width"] = 720;
395+
params["height"] = 576;
396+
break;
397+
}
398+
399+
params["progressive"] = false;
400+
401+
switch(resolution.frameRate) {
402+
case dsVIDEO_FRAMERATE_24:
403+
params["frameRateN"] = 24000;
404+
params["frameRateD"] = 1000;
405+
break;
406+
407+
case dsVIDEO_FRAMERATE_25:
408+
params["frameRateN"] = 25000;
409+
params["frameRateD"] = 1000;
410+
break;
411+
412+
case dsVIDEO_FRAMERATE_30:
413+
params["frameRateN"] = 30000;
414+
params["frameRateD"] = 1000;
415+
break;
416+
417+
case dsVIDEO_FRAMERATE_50:
418+
params["frameRateN"] = 50000;
419+
params["frameRateD"] = 1000;
420+
break;
421+
422+
case dsVIDEO_FRAMERATE_60:
423+
params["frameRateN"] = 60000;
424+
params["frameRateD"] = 1000;
425+
break;
426+
427+
case dsVIDEO_FRAMERATE_23dot98:
428+
params["frameRateN"] = 24000;
429+
params["frameRateD"] = 1001;
430+
break;
431+
432+
case dsVIDEO_FRAMERATE_29dot97:
433+
params["frameRateN"] = 30000;
434+
params["frameRateD"] = 1001;
435+
break;
436+
437+
case dsVIDEO_FRAMERATE_59dot94:
438+
params["frameRateN"] = 60000;
439+
params["frameRateD"] = 1001;
440+
break;
441+
442+
default:
443+
params["frameRateN"] = 60000;
444+
params["frameRateD"] = 1000;
445+
break;
446+
}
447+
448+
sendNotify(COMPOSITEINPUT_EVENT_ON_VIDEO_MODE_UPDATED, params);
449+
}
364450

365451
void CompositeInput::dsCompositeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
366452
{
@@ -409,6 +495,25 @@ namespace WPEFramework
409495
CompositeInput::_instance->compositeInputStatusChange(composite_in_port, composite_in_status);
410496
}
411497
}
498+
void CompositeInput::dsCompositeVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
499+
{
500+
if(!CompositeInput::_instance)
501+
return;
502+
503+
if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE == eventId)
504+
{
505+
IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
506+
int composite_in_port = eventData->data.composite_in_video_mode.port;
507+
dsVideoPortResolution_t resolution = {};
508+
resolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution;
509+
resolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced;
510+
resolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate;
511+
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);
512+
513+
CompositeInput::_instance->compositeInputVideoModeUpdate(composite_in_port, resolution);
514+
515+
}
516+
}
412517

413518
} // namespace Plugin
414519
} // namespace WPEFramework

CompositeInput/CompositeInput.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#pragma once
2121

2222
#include "libIBus.h"
23-
23+
#include "dsTypes.h"
2424
#include "Module.h"
2525

2626
namespace WPEFramework {
@@ -70,6 +70,8 @@ namespace WPEFramework {
7070
void compositeInputStatusChange( int port , bool isPresented);
7171
static void dsCompositeStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
7272

73+
void compositeInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution);
74+
static void dsCompositeVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
7375
public:
7476
CompositeInput();
7577
virtual ~CompositeInput();

0 commit comments

Comments
 (0)