2 // @ Copyright [2017] <S/W Platform, Visual Display, Samsung Electronics>
5 #include "core/trackrendereradapter_utils.h"
9 #include "core/utils/plusplayer_log.h"
11 namespace esplusplayer {
13 namespace adapter_utils {
15 void InitTrack(TrackRendererTrack* track) {
16 #ifdef TIZEN_FEATURE_PUBLIC
17 memset(track, 0x00, sizeof(TrackRendererTrack));
19 track->index = kTrackRendererInvalidTrackIndex; // int index
20 track->id = 0; // int id
21 track->mimetype = nullptr; // const char* mimetype
22 track->streamtype = nullptr; // const char* streamtype
23 track->type = kTrackRendererTrackTypeMax; // int type
24 track->codec_data = nullptr; // char* codec_data
25 track->codec_data_len = 0; // int codec_data_len
26 track->width = 0; // int width
27 track->height = 0; // int height
28 track->maxwidth = 0; // int maxwidth
29 track->maxheight = 0; // int maxheight
30 track->framerate_num = 0; // int framerate_num
31 track->framerate_den = 0; // int framerate_den
32 track->sample_rate = 0; // int sample_rate
33 track->sample_format = 0; // int sample_format
34 track->channels = 0; // int channels
35 track->version = 0; // int version
36 track->layer = 0; // int layer
37 track->bits_per_sample = 0; // int bit_per_sample
38 track->block_align = 0; // int block_align
39 track->bitrate = 0; // int bitrate
40 track->endianness = 1234; // int endianness
41 track->is_signed = 0; // int is_signed
42 track->active = 0; // int active
43 track->use_swdecoder = 0; // int use_swdecoder
44 track->language_code = nullptr; // const char* language_code
45 track->subtitle_format = nullptr; // const char* subtitle_format
48 void MakeGeometry(Geometry* roi, const TrackRendererGeometry& geometry) {
55 void MakeTrackRendererDrmProperty(
57 TrackRendererDrmProperty_64bit* trackrenderer_drm_property,
59 TrackRendererDrmProperty* trackrenderer_drm_property,
61 const drm::Property& drm_property) {
62 trackrenderer_drm_property->type =
63 ConvertToTrackRendererDrmType(drm_property.type);
65 trackrenderer_drm_property->handle =
66 static_cast<unsigned long>(drm_property.handle);
68 trackrenderer_drm_property->handle = static_cast<int>(drm_property.handle);
70 trackrenderer_drm_property->external_decryption =
71 static_cast<bool>(drm_property.external_decryption);
72 trackrenderer_drm_property->license_acquired_cb =
73 static_cast<void*>(drm_property.license_acquired_cb);
74 trackrenderer_drm_property->license_acquired_userdata =
75 static_cast<void*>(drm_property.license_acquired_userdata);
78 void MakeTrackRendererGeometry(TrackRendererGeometry* geometry,
79 const Geometry& roi) {
86 void MakeTrackRendererCropArea(TrackRendererCropArea* crop,
87 const CropArea& area) {
88 crop->scale_x = area.scale_x;
89 crop->scale_y = area.scale_y;
90 crop->scale_w = area.scale_w;
91 crop->scale_h = area.scale_h;
94 void MakeTrackRendererRenderRect(TrackRendererRenderRect* output,
95 const RenderRect& input) {
102 void MakeTrackRendererTrack(TrackRendererTrack* track, const Track& trackinfo) {
104 track->index = trackinfo.index;
105 track->id = trackinfo.id;
106 track->mimetype = trackinfo.mimetype.c_str();
107 track->streamtype = trackinfo.streamtype.c_str();
108 track->type = ConvertToTrackRendererTrackType(trackinfo.type);
109 track->codec_data = trackinfo.codec_data.get();
110 track->codec_data_len = trackinfo.codec_data_len;
111 track->width = trackinfo.width;
112 track->height = trackinfo.height;
113 track->maxwidth = trackinfo.maxwidth;
114 track->maxheight = trackinfo.maxheight;
115 track->framerate_num = trackinfo.framerate_num;
116 track->framerate_den = trackinfo.framerate_den;
117 track->sample_rate = trackinfo.sample_rate;
118 track->sample_format = trackinfo.sample_format;
119 track->channels = trackinfo.channels;
120 track->version = trackinfo.version;
121 track->layer = trackinfo.layer;
122 track->bits_per_sample = trackinfo.bits_per_sample;
123 track->block_align = trackinfo.block_align;
124 track->bitrate = trackinfo.bitrate;
125 track->endianness = trackinfo.endianness;
126 track->is_signed = trackinfo.is_signed;
127 track->active = trackinfo.active;
128 track->use_swdecoder = trackinfo.use_swdecoder;
129 track->language_code = trackinfo.language_code.c_str();
130 track->subtitle_format = trackinfo.subtitle_format.c_str();
133 void MakeTrackRendererAppInfo(TrackRendererAppInfo* app_attr,
134 const PlayerAppInfo& app_info) {
135 app_attr->id = const_cast<char*>(app_info.id.c_str());
136 app_attr->version = const_cast<char*>(app_info.version.c_str());
137 app_attr->type = const_cast<char*>(app_info.type.c_str());
140 void MakeTrackRendererAppInfoEx(TrackRendererAppInfoEx* app_attr,
141 const PlayerAppInfoEx& app_info) {
142 app_attr->id = const_cast<char*>(app_info.id.c_str());
143 app_attr->version = const_cast<char*>(app_info.version.c_str());
144 app_attr->type = const_cast<char*>(app_info.type.c_str());
145 app_attr->runtitle = const_cast<char*>(app_info.runtitle.c_str());
148 void MakeAudioEasingInfo(AudioEasingInfo* easing_info,
149 const TrackRendererAudioEasingInfo& easing_attr) {
150 easing_info->target_volume = easing_attr.target_volume;
151 easing_info->duration = easing_attr.duration;
152 easing_info->type = ConvertToAudioEasingType(easing_attr.type);
155 void MakeTrackRendererAudioEasingInfo(TrackRendererAudioEasingInfo* easing_attr,
156 const AudioEasingInfo& easing_info) {
157 easing_attr->target_volume = easing_info.target_volume;
158 easing_attr->duration = easing_info.duration;
159 easing_attr->type = ConvertToTrackRendererAudioEasingType(easing_info.type);
162 void MakeTrackRendererRational(TrackRendererRational* rational_attr,
163 const Rational& rational_info) {
164 if (!rational_attr) return;
165 rational_attr->num = rational_info.num;
166 rational_attr->den = rational_info.den;
169 DisplayMode ConvertToDisplayMode(TrackRendererDisplayMode typevalue) {
171 case kTrackRendererDisplayModeLetterBox: {
172 return DisplayMode::kLetterBox;
174 case kTrackRendererDisplayModeOriginSize: {
175 return DisplayMode::kOriginSize;
177 case kTrackRendererDisplayModeFullScreen: {
178 return DisplayMode::kFullScreen;
180 case kTrackRendererDisplayModeCroppedFull: {
181 return DisplayMode::kCroppedFull;
183 case kTrackRendererDisplayModeOriginOrLetter: {
184 return DisplayMode::kOriginOrLetter;
186 case kTrackRendererDisplayModeDstRoi: {
187 return DisplayMode::kDstRoi;
189 case kTrackRendererDisplayModeAutoAspectRatio: {
190 return DisplayMode::kAutoAspectRatio;
192 case kTrackRendererDisplayModeDisplayMax: {
193 return DisplayMode::kMax;
196 LOG_ERROR("unknown DisplayMode");
197 return DisplayMode::kFullScreen;
200 DisplayRotation ConvertToDisplayRotation(
201 const TrackRendererDisplayRotate rotate_value) {
202 switch (rotate_value) {
203 case kTrackRendererDisplayRotateNone: {
204 return DisplayRotation::kNone;
206 case kTrackRendererDisplayRotate90: {
207 return DisplayRotation::kRotate90;
209 case kTrackRendererDisplayRotate180: {
210 return DisplayRotation::kRotate180;
212 case kTrackRendererDisplayRotate270: {
213 return DisplayRotation::kRotate270;
216 return DisplayRotation::kNone;
220 DisplayType ConvertToDisplayType(const TrackRendererDisplayType typevalue) {
222 case kTrackRendererDisplayTypeNone: {
223 return DisplayType::kNone;
225 case kTrackRendererDisplayTypeOverlay: {
226 return DisplayType::kOverlay;
228 case kTrackRendererDisplayTypeEvas: {
229 return DisplayType::kEvas;
232 LOG_ERROR("unknown DisplayType");
233 return DisplayType::kNone;
237 ErrorType ConvertToErrorType(const TrackRendererErrorType type) {
239 case kTrackRendererErrorTypeErrorNone: {
240 return ErrorType::kNone;
242 case kTrackRendererErrorTypeOutOfMemory: {
243 return ErrorType::kOutOfMemory;
245 case kTrackRendererErrorTypeInvalidParameter: {
246 return ErrorType::kInvalidParameter;
248 case kTrackRendererErrorTypeNoSuchFile: {
249 return ErrorType::kNoSuchFile;
251 case kTrackRendererErrorTypeInvalidOperation: {
252 return ErrorType::kInvalidOperation;
254 case kTrackRendererErrorTypeFileNoSpaceOnDevice: {
255 return ErrorType::kFileNoSpaceOnDevice;
257 case kTrackRendererErrorTypeFeatureNotSupportedOnDevice: {
258 return ErrorType::kFeatureNotSupportedOnDevice;
260 case kTrackRendererErrorTypeSeekFailed: {
261 return ErrorType::kSeekFailed;
263 case kTrackRendererErrorTypeInvalidState: {
264 return ErrorType::kInvalidState;
266 case kTrackRendererErrorTypeNotSupportedFile: {
267 return ErrorType::kNotSupportedFile;
269 case kTrackRendererErrorTypeInvalidUri: {
270 return ErrorType::kInvalidUri;
272 case kTrackRendererErrorTypeSoundPolicy: {
273 return ErrorType::kSoundPolicy;
275 case kTrackRendererErrorTypeConnectionFailed: {
276 return ErrorType::kConnectionFailed;
278 case kTrackRendererErrorTypeVideoCaptureFailed: {
279 return ErrorType::kVideoCaptureFailed;
281 case kTrackRendererErrorTypeDrmExpired: {
282 return ErrorType::kDrmExpired;
284 case kTrackRendererErrorTypeDrmNoLicense: {
285 return ErrorType::kDrmNoLicense;
287 case kTrackRendererErrorTypeDrmFutureUse: {
288 return ErrorType::kDrmFutureUse;
290 case kTrackRendererErrorTypeDrmNotPermitted: {
291 return ErrorType::kDrmNotPermitted;
293 case kTrackRendererErrorTypeResourceLimit: {
294 return ErrorType::kResourceLimit;
296 case kTrackRendererErrorTypePermissionDenied: {
297 return ErrorType::kPermissionDenied;
299 case kTrackRendererErrorTypeServiceDisconnected: {
300 return ErrorType::kServiceDisconnected;
302 case kTrackRendererErrorTypeBufferSpace: {
303 return ErrorType::kBufferSpace;
305 case kTrackRendererErrorTypeNotSupportedAudioCodec: {
306 return ErrorType::kNotSupportedAudioCodec;
308 case kTrackRendererErrorTypeNotSupportedVideoCodec: {
309 return ErrorType::kNotSupportedVideoCodec;
311 case kTrackRendererErrorTypeNotSupportedSubtitle: {
312 return ErrorType::kNotSupportedSubtitle;
314 case kTrackRendererErrorTypeDrmInfo: {
315 return ErrorType::kDrmInfo;
317 case kTrackRendererErrorTypeNotSupportedFormat: {
318 return ErrorType::kNotSupportedFormat;
320 case kTrackRendererErrorTypeStreamingPlayer: {
321 return ErrorType::kStreamingPlayer;
323 case kTrackRendererErrorTypeDtcpFsk: {
324 return ErrorType::kDtcpFsk;
326 case kTrackRendererErrorTypePreLoadingTimeOut: {
327 return ErrorType::kPreLoadingTimeOut;
329 case kTrackRendererErrorTypeNetworkError: {
330 return ErrorType::kNetworkError;
332 case kTrackRendererErrorTypeChannelSurfingFailed: {
333 return ErrorType::kChannelSurfingFailed;
335 case kTrackRendererErrorTypeUnknown: {
336 return ErrorType::kUnknown;
339 LOG_ERROR("unknown errortype");
340 return ErrorType::kUnknown;
345 #ifndef TRACKRENDERER_FEATURE_DEPRECATE_SUBTITLE_CB
346 SubtitleAttrType ConvertToSubtitleAttrType(
347 const TrackRendererSubtitleAttrType& type) {
349 case kTrackRendererSubtitleAttrTypeRegionXPos: {
350 return SubtitleAttrType::kSubAttrRegionXPos;
352 case kTrackRendererSubtitleAttrTypeRegionYPos: {
353 return SubtitleAttrType::kSubAttrRegionYPos;
355 case kTrackRendererSubtitleAttrTypeRegionWidth: {
356 return SubtitleAttrType::kSubAttrRegionWidth;
358 case kTrackRendererSubtitleAttrTypeRegionHeight: {
359 return SubtitleAttrType::kSubAttrRegionHeight;
361 case kTrackRendererSubtitleAttrTypeWindowXPadding: {
362 return SubtitleAttrType::kSubAttrWindowXPadding;
364 case kTrackRendererSubtitleAttrTypeWindowYPadding: {
365 return SubtitleAttrType::kSubAttrWindowYPadding;
367 case kTrackRendererSubtitleAttrTypeWindowLeftMargin: {
368 return SubtitleAttrType::kSubAttrWindowLeftMargin;
370 case kTrackRendererSubtitleAttrTypeWindowRightMargin: {
371 return SubtitleAttrType::kSubAttrWindowRightMargin;
373 case kTrackRendererSubtitleAttrTypeWindowTopMargin: {
374 return SubtitleAttrType::kSubAttrWindowTopMargin;
376 case kTrackRendererSubtitleAttrTypeWindowBottomMargin: {
377 return SubtitleAttrType::kSubAttrWindowBottomMargin;
379 case kTrackRendererSubtitleAttrTypeWindowBgColor: {
380 return SubtitleAttrType::kSubAttrWindowBgColor;
382 case kTrackRendererSubtitleAttrTypeWindowOpacity: {
383 return SubtitleAttrType::kSubAttrWindowOpacity;
385 case kTrackRendererSubtitleAttrTypeWindowShowBg: {
386 return SubtitleAttrType::kSubAttrWindowShowBg;
388 case kTrackRendererSubtitleAttrTypeFontFamily: {
389 return SubtitleAttrType::kSubAttrFontFamily;
391 case kTrackRendererSubtitleAttrTypeFontSize: {
392 return SubtitleAttrType::kSubAttrFontSize;
394 case kTrackRendererSubtitleAttrTypeFontWeight: {
395 return SubtitleAttrType::kSubAttrFontWeight;
397 case kTrackRendererSubtitleAttrTypeFontStyle: {
398 return SubtitleAttrType::kSubAttrFontStyle;
400 case kTrackRendererSubtitleAttrTypeFontColor: {
401 return SubtitleAttrType::kSubAttrFontColor;
403 case kTrackRendererSubtitleAttrTypeFontBgColor: {
404 return SubtitleAttrType::kSubAttrFontBgColor;
406 case kTrackRendererSubtitleAttrTypeFontOpacity: {
407 return SubtitleAttrType::kSubAttrFontOpacity;
409 case kTrackRendererSubtitleAttrTypeFontBgOpacity: {
410 return SubtitleAttrType::kSubAttrFontBgOpacity;
412 case kTrackRendererSubtitleAttrTypeFontTextOutlineColor: {
413 return SubtitleAttrType::kSubAttrFontTextOutlineColor;
415 case kTrackRendererSubtitleAttrTypeFontTextOutlineThickness: {
416 return SubtitleAttrType::kSubAttrFontTextOutlineThickness;
418 case kTrackRendererSubtitleAttrTypeFontTextOutlineBlurRadius: {
419 return SubtitleAttrType::kSubAttrFontTextOutlineBlurRadius;
421 case kTrackRendererSubtitleAttrTypeFontVerticalAlign: {
422 return SubtitleAttrType::kSubAttrFontVerticalAlign;
424 case kTrackRendererSubtitleAttrTypeFontHorizontalAlign: {
425 return SubtitleAttrType::kSubAttrFontHorizontalAlign;
427 case kTrackRendererSubtitleAttrTypeRawSubtitle: {
428 return SubtitleAttrType::kSubAttrRawSubtitle;
430 case kTrackRendererSubtitleAttrTypeWebvttCueLine: {
431 return SubtitleAttrType::kSubAttrWebvttCueLine;
433 case kTrackRendererSubtitleAttrTypeWebvttCueLineNum: {
434 return SubtitleAttrType::kSubAttrWebvttCueLineNum;
436 case kTrackRendererSubtitleAttrTypeWebvttCueLineAlign: {
437 return SubtitleAttrType::kSubAttrWebvttCueLineAlign;
439 case kTrackRendererSubtitleAttrTypeWebvttCueAlign: {
440 return SubtitleAttrType::kSubAttrWebvttCueAlign;
442 case kTrackRendererSubtitleAttrTypeWebvttCueSize: {
443 return SubtitleAttrType::kSubAttrWebvttCueSize;
445 case kTrackRendererSubtitleAttrTypeWebvttCuePosition: {
446 return SubtitleAttrType::kSubAttrWebvttCuePosition;
448 case kTrackRendererSubtitleAttrTypeWebvttCuePositionAlign: {
449 return SubtitleAttrType::kSubAttrWebvttCuePositionAlign;
451 case kTrackRendererSubtitleAttrTypeWebvttCueVertical: {
452 return SubtitleAttrType::kSubAttrWebvttCueVertical;
454 case kTrackRendererSubtitleAttrTypeTimestamp: {
455 return SubtitleAttrType::kSubAttrTimestamp;
457 case kTrackRendererSubtitleAttrTypeExtsubIndex: {
458 return SubtitleAttrType::kSubAttrExtsubIndex;
460 case kTrackRendererSubtitleAttrTypeTypeNone: {
461 return SubtitleAttrType::kSubAttrTypeNone;
464 LOG_ERROR("unknown subtitle attr tracktype");
465 return SubtitleAttrType::kSubAttrTypeNone;
471 SubtitleType ConvertToSubtitleType(const TrackRendererSubtitleType& type) {
473 case kTrackRendererSubtitleTypeText: {
474 return SubtitleType::kText;
476 case kTrackRendererSubtitleTypePicture: {
477 return SubtitleType::kPicture;
479 case kTrackRendererSubtitleTypeInvalid: {
480 return SubtitleType::kInvalid;
483 LOG_ERROR("unknown subtitletype");
484 return SubtitleType::kInvalid;
488 TrackType ConvertToTrackType(TrackRendererTrackType typevalue) {
490 case kTrackRendererTrackTypeAudio: {
491 return TrackType::kTrackTypeAudio;
493 case kTrackRendererTrackTypeVideo: {
494 return TrackType::kTrackTypeVideo;
496 case kTrackRendererTrackTypeSubtitle: {
497 return TrackType::kTrackTypeSubtitle;
499 case kTrackRendererTrackTypeMax: {
500 return TrackType::kTrackTypeMax;
503 LOG_ERROR("unknown tracktype");
504 return TrackType::kTrackTypeMax;
508 DecodedVideoPacket ConvertToDecodedVideoPacket(
509 const TrackRendererDecodedVideoPacket* packet) {
510 DecodedVideoPacket _packet;
511 _packet.pts = packet->pts;
512 _packet.duration = packet->duration;
513 _packet.surface_data = static_cast<tbm_surface_h>(packet->surface_data);
514 #ifdef TIZEN_FEATURE_PUBLIC
515 _packet.buffer_addr = packet->buffer_addr;
517 _packet.scaler_index = packet->scaler_index;
522 TrackRendererDecodedVideoPacket ConvertToDecodedVideoPacket(
523 const DecodedVideoPacket& packet) {
524 TrackRendererDecodedVideoPacket _packet;
525 _packet.pts = packet.pts;
526 _packet.duration = packet.duration;
527 _packet.surface_data = static_cast<tbm_surface_h>(packet.surface_data);
528 #ifdef TIZEN_FEATURE_PUBLIC
529 _packet.buffer_addr = packet.buffer_addr;
531 _packet.scaler_index = packet.scaler_index;
536 TrackRendererDecodedVideoFrameBufferType ConvertToVideoFrameBufferType(
537 const DecodedVideoFrameBufferType& type) {
539 case DecodedVideoFrameBufferType::kCopy: {
540 return kTrackRendererDecodedVideoFrameBufferCopy;
542 case DecodedVideoFrameBufferType::kReference: {
543 return kTrackRendererDecodedVideoFrameBufferReference;
545 case DecodedVideoFrameBufferType::kScale: {
546 return kTrackRendererDecodedVideoFrameBufferScale;
548 case DecodedVideoFrameBufferType::kManualCopy: {
549 return kTrackRendererDecodedVideoFrameBufferManualCopy;
551 case DecodedVideoFrameBufferType::kNone: {
552 return kTrackRendererDecodedVideoFrameBufferNone;
555 LOG_ERROR("wrong buffer type");
556 return kTrackRendererDecodedVideoFrameBufferNone;
560 GetDecodedVideoFrameStatus ConvertToGetDecodedVideoFrameStatus(
561 const TrackRendererGetDecodedVideoFrameState state) {
563 case TrackRendererGetDecodedVideoFrameStateErrorNone: {
564 return GetDecodedVideoFrameStatus::kSuccess;
566 case TrackRendererGetDecodedVideoFrameStateNoRemainingBufferError: {
567 return GetDecodedVideoFrameStatus::kNoRemainingBuffer;
569 case TrackRendererGetDecodedVideoFrameStateNoFilledBufferError: {
570 return GetDecodedVideoFrameStatus::kNoFilledBuffer;
572 case TrackRendererGetDecodedVideoFrameStateUnknownError: {
573 return GetDecodedVideoFrameStatus::kUnknown;
576 LOG_ERROR("wrong state type");
577 return GetDecodedVideoFrameStatus::kUnknown;
581 TrackRendererDisplayMode ConvertToTrackRendererDisplayMode(
582 const DisplayMode& mode) {
584 case DisplayMode::kLetterBox: {
585 return kTrackRendererDisplayModeLetterBox;
587 case DisplayMode::kOriginSize: {
588 return kTrackRendererDisplayModeOriginSize;
590 case DisplayMode::kFullScreen: {
591 return kTrackRendererDisplayModeFullScreen;
593 case DisplayMode::kCroppedFull: {
594 return kTrackRendererDisplayModeCroppedFull;
596 case DisplayMode::kOriginOrLetter: {
597 return kTrackRendererDisplayModeOriginOrLetter;
599 case DisplayMode::kDstRoi: {
600 return kTrackRendererDisplayModeDstRoi;
602 case DisplayMode::kAutoAspectRatio: {
603 return kTrackRendererDisplayModeAutoAspectRatio;
605 case DisplayMode::kMax: {
606 return kTrackRendererDisplayModeDisplayMax;
609 LOG_ERROR("unknown displaymode");
610 return kTrackRendererDisplayModeFullScreen;
614 TrackRendererDisplayRotate ConvertToTrackRendererDisplayRotate(
615 const DisplayRotation& rotate) {
617 case DisplayRotation::kNone: {
618 return kTrackRendererDisplayRotateNone;
620 case DisplayRotation::kRotate90: {
621 return kTrackRendererDisplayRotate90;
623 case DisplayRotation::kRotate180: {
624 return kTrackRendererDisplayRotate180;
626 case DisplayRotation::kRotate270: {
627 return kTrackRendererDisplayRotate270;
630 LOG_ERROR("unknown displayrotate");
631 return kTrackRendererDisplayRotateNone;
635 TrackRendererDisplayType ConvertToTrackRendererDisplayType(
636 const DisplayType& type) {
638 case DisplayType::kNone: {
639 return kTrackRendererDisplayTypeNone;
641 case DisplayType::kOverlay: {
642 return kTrackRendererDisplayTypeOverlay;
644 case DisplayType::kEvas: {
645 return kTrackRendererDisplayTypeEvas;
648 LOG_ERROR("unknown displaytype");
649 return kTrackRendererDisplayTypeNone;
653 TrackRendererDrmType ConvertToTrackRendererDrmType(const drm::Type& drm_type) {
655 case drm::Type::kNone: {
656 return kTrackRendererDrmTypeNone;
658 case drm::Type::kPlayready: {
659 return kTrackRendererDrmTypePlayready;
661 case drm::Type::kMarlin: {
662 return kTrackRendererDrmTypeMarlin;
664 case drm::Type::kVerimatrix: {
665 return kTrackRendererDrmTypeVerimatrix;
667 case drm::Type::kWidevineClassic: {
668 return kTrackRendererDrmTypeWidevineClassic;
670 case drm::Type::kSecuremedia: {
671 return kTrackRendererDrmTypeSecuremedia;
673 case drm::Type::kSdrm: {
674 return kTrackRendererDrmTypeSdrm;
676 case drm::Type::kWidevineCdm: {
677 return kTrackRendererDrmTypeWidevineCdm;
679 case drm::Type::kMax: {
680 return kTrackRendererDrmTypeDrmMax;
683 LOG_ERROR("unknown drmtype");
684 return kTrackRendererDrmTypeNone;
688 TrackRendererStillMode ConvertToTrackRendererStillMode(
689 const StillMode& still_mode) {
690 switch (still_mode) {
691 case StillMode::kNone: {
692 return kTrackRendererStillModeNone;
694 case StillMode::kOff: {
695 return kTrackRendererStillModeOff;
697 case StillMode::kOn: {
698 return kTrackRendererStillModeOn;
701 LOG_ERROR("unknown stillmode");
702 return kTrackRendererStillModeNone;
706 TrackRendererTrackType ConvertToTrackRendererTrackType(const TrackType& type) {
708 case TrackType::kTrackTypeAudio: {
709 return kTrackRendererTrackTypeAudio;
711 case TrackType::kTrackTypeVideo: {
712 return kTrackRendererTrackTypeVideo;
714 case TrackType::kTrackTypeSubtitle: {
715 return kTrackRendererTrackTypeSubtitle;
717 case TrackType::kTrackTypeMax: {
718 return kTrackRendererTrackTypeMax;
721 LOG_ERROR("unknown tracktype");
722 return kTrackRendererTrackTypeMax;
726 TrackRendererTrackType ConvertToTrackRendererTrackTypeFromStreamType(
727 const StreamType& type) {
729 case StreamType::kAudio: {
730 return kTrackRendererTrackTypeAudio;
732 case StreamType::kVideo: {
733 return kTrackRendererTrackTypeVideo;
735 case StreamType::kMax: {
736 return kTrackRendererTrackTypeMax;
739 LOG_ERROR("unknown steamtype");
740 return kTrackRendererTrackTypeMax;
744 TrackRendererVideoStreamRotation ConvertToTrackRendererVideoStreamRotation(
745 const VideoRotation& rotation) {
747 case VideoRotation::kVideoRotateNone: {
748 return kTrackRendererVideoStreamRotationNone;
750 case VideoRotation::kVideoRotate90: {
751 return kTrackRendererVideoStreamRotation90;
753 case VideoRotation::kVideoRotate180: {
754 return kTrackRendererVideoStreamRotation180;
756 case VideoRotation::kVideoRotate270: {
757 return kTrackRendererVideoStreamRotation270;
760 LOG_ERROR("unknown rotation type");
761 return kTrackRendererVideoStreamRotationNone;
766 #ifndef TRACKRENDERER_FEATURE_DEPRECATE_SUBTITLE_CB
767 boost::any SetSubtitleAttrValue(const TrackRendererSubtitleAttr& attr) {
768 boost::any any_value;
770 case kTrackRendererSubtitleAttrTypeRegionXPos: // fall through
771 case kTrackRendererSubtitleAttrTypeRegionYPos: // fall through
772 case kTrackRendererSubtitleAttrTypeRegionWidth: // fall through
773 case kTrackRendererSubtitleAttrTypeRegionHeight: // fall through
774 case kTrackRendererSubtitleAttrTypeWindowXPadding: // fall through
775 case kTrackRendererSubtitleAttrTypeWindowYPadding: // fall through
776 case kTrackRendererSubtitleAttrTypeWindowOpacity: // fall through
777 case kTrackRendererSubtitleAttrTypeWindowShowBg: // fall through
778 case kTrackRendererSubtitleAttrTypeFontSize: // fall through
779 case kTrackRendererSubtitleAttrTypeFontOpacity: // fall through
780 case kTrackRendererSubtitleAttrTypeFontBgOpacity: // fall through
781 case kTrackRendererSubtitleAttrTypeWebvttCueLine: // fall through
782 case kTrackRendererSubtitleAttrTypeWebvttCueSize: // fall through
783 case kTrackRendererSubtitleAttrTypeWebvttCuePosition: // fall through
784 case kTrackRendererSubtitleAttrTypeWebvttCueVertical: {
785 if (attr.value.f) any_value = attr.value.f;
788 case kTrackRendererSubtitleAttrTypeWindowLeftMargin: // fall through
789 case kTrackRendererSubtitleAttrTypeWindowRightMargin: // fall through
790 case kTrackRendererSubtitleAttrTypeWindowTopMargin: // fall through
791 case kTrackRendererSubtitleAttrTypeWindowBottomMargin: // fall through
792 case kTrackRendererSubtitleAttrTypeWindowBgColor: // fall through
793 case kTrackRendererSubtitleAttrTypeFontWeight: // fall through
794 case kTrackRendererSubtitleAttrTypeFontStyle: // fall through
795 case kTrackRendererSubtitleAttrTypeFontColor: // fall through
796 case kTrackRendererSubtitleAttrTypeFontBgColor: // fall through
797 case kTrackRendererSubtitleAttrTypeFontTextOutlineColor: // fall through
798 case kTrackRendererSubtitleAttrTypeFontTextOutlineThickness: // fall
800 case kTrackRendererSubtitleAttrTypeFontTextOutlineBlurRadius: // fall
802 case kTrackRendererSubtitleAttrTypeFontVerticalAlign: // fall through
803 case kTrackRendererSubtitleAttrTypeFontHorizontalAlign: // fall through
804 case kTrackRendererSubtitleAttrTypeWebvttCueLineNum: // fall through
805 case kTrackRendererSubtitleAttrTypeWebvttCueLineAlign: // fall through
806 case kTrackRendererSubtitleAttrTypeWebvttCueAlign: // fall through
807 case kTrackRendererSubtitleAttrTypeWebvttCuePositionAlign: {
808 if (attr.value.i32) any_value = attr.value.i32;
811 case kTrackRendererSubtitleAttrTypeFontFamily: // fall through
812 case kTrackRendererSubtitleAttrTypeRawSubtitle: {
813 if (attr.value.str) any_value = std::string(attr.value.str);
816 case kTrackRendererSubtitleAttrTypeTimestamp:
817 case kTrackRendererSubtitleAttrTypeExtsubIndex:
820 LOG_ERROR("Unknown subtitle attr type");
827 BufferStatus ConvertToBufferStatus(const TrackRendererBufferStatus& status) {
829 case kTrackRendererBufferStatusUnderrun: {
830 return BufferStatus::kUnderrun;
832 case kTrackRendererBufferStatusOverrun: {
833 return BufferStatus::kOverrun;
836 LOG_ERROR("Unknown buffern status");
837 return BufferStatus::kUnderrun;
840 TrackRendererCatchUpSpeed ConvertToTrackRendererCatchUpSpeed(
841 const CatchUpSpeed& level) {
843 case CatchUpSpeed::kNone: {
844 return kTrackRendererCatchUpSpeedNone;
846 case CatchUpSpeed::kSlow: {
847 return kTrackRendererCatchUpSpeedSlow;
849 case CatchUpSpeed::kNormal: {
850 return kTrackRendererCatchUpSpeedNormal;
852 case CatchUpSpeed::kFast: {
853 return kTrackRendererCatchUpSpeedFast;
856 LOG_ERROR("Unknown catch up speed");
857 return kTrackRendererCatchUpSpeedNone;
860 LatencyStatus ConvertToLatencyStatus(const TrackRendererLatencyStatus& status) {
862 case kTrackRendererLatencyStatusLow: {
863 return LatencyStatus::kLow;
865 case kTrackRendererLatencyStatusMid: {
866 return LatencyStatus::kMid;
868 case kTrackRendererLatencyStatusHigh: {
869 return LatencyStatus::kHigh;
872 LOG_ERROR("Unknown status");
873 return LatencyStatus::kLow;
876 AudioEasingType ConvertToAudioEasingType(
877 const TrackRendererAudioEasingType& type) {
879 case TrackRendererAudioEasingType::kTrackRendererAudioEasingLinear: {
880 return AudioEasingType::kAudioEasingLinear;
882 case TrackRendererAudioEasingType::kTrackRendererAudioEasingIncubic: {
883 return AudioEasingType::kAudioEasingIncubic;
885 case TrackRendererAudioEasingType::kTrackRendererAudioEasingOutcubic: {
886 return AudioEasingType::kAudioEasingOutcubic;
889 LOG_ERROR("Unknown audio easing type");
890 return AudioEasingType::kAudioEasingNone;
894 TrackRendererAudioEasingType ConvertToTrackRendererAudioEasingType(
895 const AudioEasingType& type) {
897 case AudioEasingType::kAudioEasingLinear: {
898 return TrackRendererAudioEasingType::kTrackRendererAudioEasingLinear;
900 case AudioEasingType::kAudioEasingIncubic: {
901 return TrackRendererAudioEasingType::kTrackRendererAudioEasingIncubic;
903 case AudioEasingType::kAudioEasingOutcubic: {
904 return TrackRendererAudioEasingType::kTrackRendererAudioEasingOutcubic;
907 LOG_ERROR("Unknown audio easing type");
908 return TrackRendererAudioEasingType::kTrackRendererAudioEasingNone;
912 bool ConvertToTrackRendererRscType(const RscType& typevalue,
913 TrackRendererRscType* type) {
915 case RscType::kVideoRenderer: {
916 *type = kTrackRendererRscTypeVideoRenderer;
920 LOG_ERROR("unknown resource type");
925 bool ConvertToTrackRendererAdvPictureQualityType(
926 const AdvPictureQualityType& typevalue,
927 TrackRendererAdvPictureQualityType* type) {
929 case AdvPictureQualityType::kVideoCall: {
930 *type = kTrackRendererAdvPictureQualityTypeVideoCall;
933 case AdvPictureQualityType::kUsbCamera: {
934 *type = kTrackRendererAdvPictureQualityTypeUsbCamera;
937 case AdvPictureQualityType::kAirplayMirroring: {
938 *type = kTrackRendererAdvPictuerQualityTypeAirplayMirroring;
942 LOG_ERROR("unknown resource type");
947 bool ConvertToTrackRendererRscAllocPolicy(const RscAllocPolicy& policyvalue,
948 TrackRendererRscAllocPolicy* policy) {
949 switch (policyvalue) {
950 case RscAllocPolicy::kRscAllocExclusive: {
951 *policy = kTrackRendererRscAllocExclusive;
954 case RscAllocPolicy::kRscAllocConditional: {
955 *policy = kTrackRendererRscAllocConditional;
958 case RscAllocPolicy::kRscAllocExclusiveNoExplicit: {
959 *policy = kTrackRendererRscAllocExclusiveNoExplicit;
963 LOG_ERROR("unknown policy");
968 bool ConvertToTrackRendererAlternativeAudioResource(
969 const PlayerAudioResourceType& typevalue, unsigned int* type) {
971 case kPlayerAudioResourceTypeMain:
974 case kPlayerAudioResourceTypeSubDecoder:
977 case kPlayerAudioResourceTypeSimpleMixOut:
981 LOG_ERROR("unkown type");
986 } // namespace adapter_utils
988 } // namespace esplusplayer