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 track->index = kTrackRendererInvalidTrackIndex; // int index
17 track->id = 0; // int id
18 track->mimetype = nullptr; // const char* mimetype
19 track->streamtype = nullptr; // const char* streamtype
20 track->type = kTrackRendererTrackTypeMax; // int type
21 track->codec_data = nullptr; // char* codec_data
22 track->codec_data_len = 0; // int codec_data_len
23 track->width = 0; // int width
24 track->height = 0; // int height
25 track->maxwidth = 0; // int maxwidth
26 track->maxheight = 0; // int maxheight
27 track->framerate_num = 0; // int framerate_num
28 track->framerate_den = 0; // int framerate_den
29 track->sample_rate = 0; // int sample_rate
30 track->sample_format = 0; // int sample_format
31 track->channels = 0; // int channels
32 track->version = 0; // int version
33 track->layer = 0; // int layer
34 track->bits_per_sample = 0; // int bit_per_sample
35 track->block_align = 0; // int block_align
36 track->bitrate = 0; // int bitrate
37 track->endianness = 1234; // int endianness
38 track->is_signed = 0; // int is_signed
39 track->active = 0; // int active
40 track->use_swdecoder = 0; // int use_swdecoder
41 track->language_code = nullptr; // const char* language_code
42 track->subtitle_format = nullptr; // const char* subtitle_format
45 void MakeGeometry(Geometry* roi, const TrackRendererGeometry& geometry) {
52 void MakeTrackRendererDrmProperty(
54 TrackRendererDrmProperty_64bit* trackrenderer_drm_property,
56 TrackRendererDrmProperty* trackrenderer_drm_property,
58 const drm::Property& drm_property) {
59 trackrenderer_drm_property->type =
60 ConvertToTrackRendererDrmType(drm_property.type);
62 trackrenderer_drm_property->handle =
63 static_cast<unsigned long>(drm_property.handle);
65 trackrenderer_drm_property->handle = static_cast<int>(drm_property.handle);
67 trackrenderer_drm_property->external_decryption =
68 static_cast<bool>(drm_property.external_decryption);
69 trackrenderer_drm_property->license_acquired_cb =
70 static_cast<void*>(drm_property.license_acquired_cb);
71 trackrenderer_drm_property->license_acquired_userdata =
72 static_cast<void*>(drm_property.license_acquired_userdata);
75 void MakeTrackRendererGeometry(TrackRendererGeometry* geometry,
76 const Geometry& roi) {
83 void MakeTrackRendererCropArea(TrackRendererCropArea* crop,
84 const CropArea& area) {
85 crop->scale_x = area.scale_x;
86 crop->scale_y = area.scale_y;
87 crop->scale_w = area.scale_w;
88 crop->scale_h = area.scale_h;
91 void MakeTrackRendererRenderRect(TrackRendererRenderRect* output,
92 const RenderRect& input) {
99 void MakeTrackRendererTrack(TrackRendererTrack* track, const Track& trackinfo) {
101 track->index = trackinfo.index;
102 track->id = trackinfo.id;
103 track->mimetype = trackinfo.mimetype.c_str();
104 track->streamtype = trackinfo.streamtype.c_str();
105 track->type = ConvertToTrackRendererTrackType(trackinfo.type);
106 track->codec_data = trackinfo.codec_data.get();
107 track->codec_data_len = trackinfo.codec_data_len;
108 track->width = trackinfo.width;
109 track->height = trackinfo.height;
110 track->maxwidth = trackinfo.maxwidth;
111 track->maxheight = trackinfo.maxheight;
112 track->framerate_num = trackinfo.framerate_num;
113 track->framerate_den = trackinfo.framerate_den;
114 track->sample_rate = trackinfo.sample_rate;
115 track->sample_format = trackinfo.sample_format;
116 track->channels = trackinfo.channels;
117 track->version = trackinfo.version;
118 track->layer = trackinfo.layer;
119 track->bits_per_sample = trackinfo.bits_per_sample;
120 track->block_align = trackinfo.block_align;
121 track->bitrate = trackinfo.bitrate;
122 track->endianness = trackinfo.endianness;
123 track->is_signed = trackinfo.is_signed;
124 track->active = trackinfo.active;
125 track->use_swdecoder = trackinfo.use_swdecoder;
126 track->language_code = trackinfo.language_code.c_str();
127 track->subtitle_format = trackinfo.subtitle_format.c_str();
130 void MakeTrackRendererAppInfo(TrackRendererAppInfo* app_attr,
131 const PlayerAppInfo& app_info) {
132 app_attr->id = const_cast<char*>(app_info.id.c_str());
133 app_attr->version = const_cast<char*>(app_info.version.c_str());
134 app_attr->type = const_cast<char*>(app_info.type.c_str());
137 void MakeTrackRendererAppInfoEx(TrackRendererAppInfoEx* app_attr,
138 const PlayerAppInfoEx& app_info) {
139 app_attr->id = const_cast<char*>(app_info.id.c_str());
140 app_attr->version = const_cast<char*>(app_info.version.c_str());
141 app_attr->type = const_cast<char*>(app_info.type.c_str());
142 app_attr->runtitle = const_cast<char*>(app_info.runtitle.c_str());
145 void MakeAudioEasingInfo(AudioEasingInfo* easing_info,
146 const TrackRendererAudioEasingInfo& easing_attr) {
147 easing_info->target_volume = easing_attr.target_volume;
148 easing_info->duration = easing_attr.duration;
149 easing_info->type = ConvertToAudioEasingType(easing_attr.type);
152 void MakeTrackRendererAudioEasingInfo(TrackRendererAudioEasingInfo* easing_attr,
153 const AudioEasingInfo& easing_info) {
154 easing_attr->target_volume = easing_info.target_volume;
155 easing_attr->duration = easing_info.duration;
156 easing_attr->type = ConvertToTrackRendererAudioEasingType(easing_info.type);
159 void MakeTrackRendererRational(TrackRendererRational* rational_attr,
160 const Rational& rational_info) {
161 if (!rational_attr) return;
162 rational_attr->num = rational_info.num;
163 rational_attr->den = rational_info.den;
166 DisplayMode ConvertToDisplayMode(TrackRendererDisplayMode typevalue) {
168 case kTrackRendererDisplayModeLetterBox: {
169 return DisplayMode::kLetterBox;
171 case kTrackRendererDisplayModeOriginSize: {
172 return DisplayMode::kOriginSize;
174 case kTrackRendererDisplayModeFullScreen: {
175 return DisplayMode::kFullScreen;
177 case kTrackRendererDisplayModeCroppedFull: {
178 return DisplayMode::kCroppedFull;
180 case kTrackRendererDisplayModeOriginOrLetter: {
181 return DisplayMode::kOriginOrLetter;
183 case kTrackRendererDisplayModeDstRoi: {
184 return DisplayMode::kDstRoi;
186 case kTrackRendererDisplayModeAutoAspectRatio: {
187 return DisplayMode::kAutoAspectRatio;
189 case kTrackRendererDisplayModeDisplayMax: {
190 return DisplayMode::kMax;
193 LOG_ERROR("unknown DisplayMode");
194 return DisplayMode::kFullScreen;
197 DisplayRotation ConvertToDisplayRotation(
198 const TrackRendererDisplayRotate rotate_value) {
199 switch (rotate_value) {
200 case kTrackRendererDisplayRotateNone: {
201 return DisplayRotation::kNone;
203 case kTrackRendererDisplayRotate90: {
204 return DisplayRotation::kRotate90;
206 case kTrackRendererDisplayRotate180: {
207 return DisplayRotation::kRotate180;
209 case kTrackRendererDisplayRotate270: {
210 return DisplayRotation::kRotate270;
213 return DisplayRotation::kNone;
217 DisplayType ConvertToDisplayType(const TrackRendererDisplayType typevalue) {
219 case kTrackRendererDisplayTypeNone: {
220 return DisplayType::kNone;
222 case kTrackRendererDisplayTypeOverlay: {
223 return DisplayType::kOverlay;
225 case kTrackRendererDisplayTypeEvas: {
226 return DisplayType::kEvas;
229 LOG_ERROR("unknown DisplayType");
230 return DisplayType::kNone;
234 ErrorType ConvertToErrorType(const TrackRendererErrorType type) {
236 case kTrackRendererErrorTypeErrorNone: {
237 return ErrorType::kNone;
239 case kTrackRendererErrorTypeOutOfMemory: {
240 return ErrorType::kOutOfMemory;
242 case kTrackRendererErrorTypeInvalidParameter: {
243 return ErrorType::kInvalidParameter;
245 case kTrackRendererErrorTypeNoSuchFile: {
246 return ErrorType::kNoSuchFile;
248 case kTrackRendererErrorTypeInvalidOperation: {
249 return ErrorType::kInvalidOperation;
251 case kTrackRendererErrorTypeFileNoSpaceOnDevice: {
252 return ErrorType::kFileNoSpaceOnDevice;
254 case kTrackRendererErrorTypeFeatureNotSupportedOnDevice: {
255 return ErrorType::kFeatureNotSupportedOnDevice;
257 case kTrackRendererErrorTypeSeekFailed: {
258 return ErrorType::kSeekFailed;
260 case kTrackRendererErrorTypeInvalidState: {
261 return ErrorType::kInvalidState;
263 case kTrackRendererErrorTypeNotSupportedFile: {
264 return ErrorType::kNotSupportedFile;
266 case kTrackRendererErrorTypeInvalidUri: {
267 return ErrorType::kInvalidUri;
269 case kTrackRendererErrorTypeSoundPolicy: {
270 return ErrorType::kSoundPolicy;
272 case kTrackRendererErrorTypeConnectionFailed: {
273 return ErrorType::kConnectionFailed;
275 case kTrackRendererErrorTypeVideoCaptureFailed: {
276 return ErrorType::kVideoCaptureFailed;
278 case kTrackRendererErrorTypeDrmExpired: {
279 return ErrorType::kDrmExpired;
281 case kTrackRendererErrorTypeDrmNoLicense: {
282 return ErrorType::kDrmNoLicense;
284 case kTrackRendererErrorTypeDrmFutureUse: {
285 return ErrorType::kDrmFutureUse;
287 case kTrackRendererErrorTypeDrmNotPermitted: {
288 return ErrorType::kDrmNotPermitted;
290 case kTrackRendererErrorTypeResourceLimit: {
291 return ErrorType::kResourceLimit;
293 case kTrackRendererErrorTypePermissionDenied: {
294 return ErrorType::kPermissionDenied;
296 case kTrackRendererErrorTypeServiceDisconnected: {
297 return ErrorType::kServiceDisconnected;
299 case kTrackRendererErrorTypeBufferSpace: {
300 return ErrorType::kBufferSpace;
302 case kTrackRendererErrorTypeNotSupportedAudioCodec: {
303 return ErrorType::kNotSupportedAudioCodec;
305 case kTrackRendererErrorTypeNotSupportedVideoCodec: {
306 return ErrorType::kNotSupportedVideoCodec;
308 case kTrackRendererErrorTypeNotSupportedSubtitle: {
309 return ErrorType::kNotSupportedSubtitle;
311 case kTrackRendererErrorTypeDrmInfo: {
312 return ErrorType::kDrmInfo;
314 case kTrackRendererErrorTypeNotSupportedFormat: {
315 return ErrorType::kNotSupportedFormat;
317 case kTrackRendererErrorTypeStreamingPlayer: {
318 return ErrorType::kStreamingPlayer;
320 case kTrackRendererErrorTypeDtcpFsk: {
321 return ErrorType::kDtcpFsk;
323 case kTrackRendererErrorTypePreLoadingTimeOut: {
324 return ErrorType::kPreLoadingTimeOut;
326 case kTrackRendererErrorTypeNetworkError: {
327 return ErrorType::kNetworkError;
329 case kTrackRendererErrorTypeChannelSurfingFailed: {
330 return ErrorType::kChannelSurfingFailed;
332 case kTrackRendererErrorTypeUnknown: {
333 return ErrorType::kUnknown;
336 LOG_ERROR("unknown errortype");
337 return ErrorType::kUnknown;
342 #ifndef TRACKRENDERER_FEATURE_DEPRECATE_SUBTITLE_CB
343 SubtitleAttrType ConvertToSubtitleAttrType(
344 const TrackRendererSubtitleAttrType& type) {
346 case kTrackRendererSubtitleAttrTypeRegionXPos: {
347 return SubtitleAttrType::kSubAttrRegionXPos;
349 case kTrackRendererSubtitleAttrTypeRegionYPos: {
350 return SubtitleAttrType::kSubAttrRegionYPos;
352 case kTrackRendererSubtitleAttrTypeRegionWidth: {
353 return SubtitleAttrType::kSubAttrRegionWidth;
355 case kTrackRendererSubtitleAttrTypeRegionHeight: {
356 return SubtitleAttrType::kSubAttrRegionHeight;
358 case kTrackRendererSubtitleAttrTypeWindowXPadding: {
359 return SubtitleAttrType::kSubAttrWindowXPadding;
361 case kTrackRendererSubtitleAttrTypeWindowYPadding: {
362 return SubtitleAttrType::kSubAttrWindowYPadding;
364 case kTrackRendererSubtitleAttrTypeWindowLeftMargin: {
365 return SubtitleAttrType::kSubAttrWindowLeftMargin;
367 case kTrackRendererSubtitleAttrTypeWindowRightMargin: {
368 return SubtitleAttrType::kSubAttrWindowRightMargin;
370 case kTrackRendererSubtitleAttrTypeWindowTopMargin: {
371 return SubtitleAttrType::kSubAttrWindowTopMargin;
373 case kTrackRendererSubtitleAttrTypeWindowBottomMargin: {
374 return SubtitleAttrType::kSubAttrWindowBottomMargin;
376 case kTrackRendererSubtitleAttrTypeWindowBgColor: {
377 return SubtitleAttrType::kSubAttrWindowBgColor;
379 case kTrackRendererSubtitleAttrTypeWindowOpacity: {
380 return SubtitleAttrType::kSubAttrWindowOpacity;
382 case kTrackRendererSubtitleAttrTypeWindowShowBg: {
383 return SubtitleAttrType::kSubAttrWindowShowBg;
385 case kTrackRendererSubtitleAttrTypeFontFamily: {
386 return SubtitleAttrType::kSubAttrFontFamily;
388 case kTrackRendererSubtitleAttrTypeFontSize: {
389 return SubtitleAttrType::kSubAttrFontSize;
391 case kTrackRendererSubtitleAttrTypeFontWeight: {
392 return SubtitleAttrType::kSubAttrFontWeight;
394 case kTrackRendererSubtitleAttrTypeFontStyle: {
395 return SubtitleAttrType::kSubAttrFontStyle;
397 case kTrackRendererSubtitleAttrTypeFontColor: {
398 return SubtitleAttrType::kSubAttrFontColor;
400 case kTrackRendererSubtitleAttrTypeFontBgColor: {
401 return SubtitleAttrType::kSubAttrFontBgColor;
403 case kTrackRendererSubtitleAttrTypeFontOpacity: {
404 return SubtitleAttrType::kSubAttrFontOpacity;
406 case kTrackRendererSubtitleAttrTypeFontBgOpacity: {
407 return SubtitleAttrType::kSubAttrFontBgOpacity;
409 case kTrackRendererSubtitleAttrTypeFontTextOutlineColor: {
410 return SubtitleAttrType::kSubAttrFontTextOutlineColor;
412 case kTrackRendererSubtitleAttrTypeFontTextOutlineThickness: {
413 return SubtitleAttrType::kSubAttrFontTextOutlineThickness;
415 case kTrackRendererSubtitleAttrTypeFontTextOutlineBlurRadius: {
416 return SubtitleAttrType::kSubAttrFontTextOutlineBlurRadius;
418 case kTrackRendererSubtitleAttrTypeFontVerticalAlign: {
419 return SubtitleAttrType::kSubAttrFontVerticalAlign;
421 case kTrackRendererSubtitleAttrTypeFontHorizontalAlign: {
422 return SubtitleAttrType::kSubAttrFontHorizontalAlign;
424 case kTrackRendererSubtitleAttrTypeRawSubtitle: {
425 return SubtitleAttrType::kSubAttrRawSubtitle;
427 case kTrackRendererSubtitleAttrTypeWebvttCueLine: {
428 return SubtitleAttrType::kSubAttrWebvttCueLine;
430 case kTrackRendererSubtitleAttrTypeWebvttCueLineNum: {
431 return SubtitleAttrType::kSubAttrWebvttCueLineNum;
433 case kTrackRendererSubtitleAttrTypeWebvttCueLineAlign: {
434 return SubtitleAttrType::kSubAttrWebvttCueLineAlign;
436 case kTrackRendererSubtitleAttrTypeWebvttCueAlign: {
437 return SubtitleAttrType::kSubAttrWebvttCueAlign;
439 case kTrackRendererSubtitleAttrTypeWebvttCueSize: {
440 return SubtitleAttrType::kSubAttrWebvttCueSize;
442 case kTrackRendererSubtitleAttrTypeWebvttCuePosition: {
443 return SubtitleAttrType::kSubAttrWebvttCuePosition;
445 case kTrackRendererSubtitleAttrTypeWebvttCuePositionAlign: {
446 return SubtitleAttrType::kSubAttrWebvttCuePositionAlign;
448 case kTrackRendererSubtitleAttrTypeWebvttCueVertical: {
449 return SubtitleAttrType::kSubAttrWebvttCueVertical;
451 case kTrackRendererSubtitleAttrTypeTimestamp: {
452 return SubtitleAttrType::kSubAttrTimestamp;
454 case kTrackRendererSubtitleAttrTypeExtsubIndex: {
455 return SubtitleAttrType::kSubAttrExtsubIndex;
457 case kTrackRendererSubtitleAttrTypeTypeNone: {
458 return SubtitleAttrType::kSubAttrTypeNone;
461 LOG_ERROR("unknown subtitle attr tracktype");
462 return SubtitleAttrType::kSubAttrTypeNone;
468 SubtitleType ConvertToSubtitleType(const TrackRendererSubtitleType& type) {
470 case kTrackRendererSubtitleTypeText: {
471 return SubtitleType::kText;
473 case kTrackRendererSubtitleTypePicture: {
474 return SubtitleType::kPicture;
476 case kTrackRendererSubtitleTypeInvalid: {
477 return SubtitleType::kInvalid;
480 LOG_ERROR("unknown subtitletype");
481 return SubtitleType::kInvalid;
485 TrackType ConvertToTrackType(TrackRendererTrackType typevalue) {
487 case kTrackRendererTrackTypeAudio: {
488 return TrackType::kTrackTypeAudio;
490 case kTrackRendererTrackTypeVideo: {
491 return TrackType::kTrackTypeVideo;
493 case kTrackRendererTrackTypeSubtitle: {
494 return TrackType::kTrackTypeSubtitle;
496 case kTrackRendererTrackTypeMax: {
497 return TrackType::kTrackTypeMax;
500 LOG_ERROR("unknown tracktype");
501 return TrackType::kTrackTypeMax;
505 DecodedVideoPacket ConvertToDecodedVideoPacket(
506 const TrackRendererDecodedVideoPacket* packet) {
507 DecodedVideoPacket _packet;
508 _packet.pts = packet->pts;
509 _packet.duration = packet->duration;
510 _packet.surface_data = static_cast<tbm_surface_h>(packet->surface_data);
511 _packet.scaler_index = packet->scaler_index;
515 TrackRendererDecodedVideoPacket ConvertToDecodedVideoPacket(
516 const DecodedVideoPacket& packet) {
517 TrackRendererDecodedVideoPacket _packet;
518 _packet.pts = packet.pts;
519 _packet.duration = packet.duration;
520 _packet.surface_data = static_cast<tbm_surface_h>(packet.surface_data);
521 _packet.scaler_index = packet.scaler_index;
525 TrackRendererDecodedVideoFrameBufferType ConvertToVideoFrameBufferType(
526 const DecodedVideoFrameBufferType& type) {
528 case DecodedVideoFrameBufferType::kCopy: {
529 return kTrackRendererDecodedVideoFrameBufferCopy;
531 case DecodedVideoFrameBufferType::kReference: {
532 return kTrackRendererDecodedVideoFrameBufferReference;
534 case DecodedVideoFrameBufferType::kScale: {
535 return kTrackRendererDecodedVideoFrameBufferScale;
537 case DecodedVideoFrameBufferType::kManualCopy: {
538 return kTrackRendererDecodedVideoFrameBufferManualCopy;
540 case DecodedVideoFrameBufferType::kNone: {
541 return kTrackRendererDecodedVideoFrameBufferNone;
544 LOG_ERROR("wrong buffer type");
545 return kTrackRendererDecodedVideoFrameBufferNone;
549 GetDecodedVideoFrameStatus ConvertToGetDecodedVideoFrameStatus(
550 const TrackRendererGetDecodedVideoFrameState state) {
552 case TrackRendererGetDecodedVideoFrameStateErrorNone: {
553 return GetDecodedVideoFrameStatus::kSuccess;
555 case TrackRendererGetDecodedVideoFrameStateNoRemainingBufferError: {
556 return GetDecodedVideoFrameStatus::kNoRemainingBuffer;
558 case TrackRendererGetDecodedVideoFrameStateNoFilledBufferError: {
559 return GetDecodedVideoFrameStatus::kNoFilledBuffer;
561 case TrackRendererGetDecodedVideoFrameStateUnknownError: {
562 return GetDecodedVideoFrameStatus::kUnknown;
565 LOG_ERROR("wrong state type");
566 return GetDecodedVideoFrameStatus::kUnknown;
570 TrackRendererDisplayMode ConvertToTrackRendererDisplayMode(
571 const DisplayMode& mode) {
573 case DisplayMode::kLetterBox: {
574 return kTrackRendererDisplayModeLetterBox;
576 case DisplayMode::kOriginSize: {
577 return kTrackRendererDisplayModeOriginSize;
579 case DisplayMode::kFullScreen: {
580 return kTrackRendererDisplayModeFullScreen;
582 case DisplayMode::kCroppedFull: {
583 return kTrackRendererDisplayModeCroppedFull;
585 case DisplayMode::kOriginOrLetter: {
586 return kTrackRendererDisplayModeOriginOrLetter;
588 case DisplayMode::kDstRoi: {
589 return kTrackRendererDisplayModeDstRoi;
591 case DisplayMode::kAutoAspectRatio: {
592 return kTrackRendererDisplayModeAutoAspectRatio;
594 case DisplayMode::kMax: {
595 return kTrackRendererDisplayModeDisplayMax;
598 LOG_ERROR("unknown displaymode");
599 return kTrackRendererDisplayModeFullScreen;
603 TrackRendererDisplayRotate ConvertToTrackRendererDisplayRotate(
604 const DisplayRotation& rotate) {
606 case DisplayRotation::kNone: {
607 return kTrackRendererDisplayRotateNone;
609 case DisplayRotation::kRotate90: {
610 return kTrackRendererDisplayRotate90;
612 case DisplayRotation::kRotate180: {
613 return kTrackRendererDisplayRotate180;
615 case DisplayRotation::kRotate270: {
616 return kTrackRendererDisplayRotate270;
619 LOG_ERROR("unknown displayrotate");
620 return kTrackRendererDisplayRotateNone;
624 TrackRendererDisplayType ConvertToTrackRendererDisplayType(
625 const DisplayType& type) {
627 case DisplayType::kNone: {
628 return kTrackRendererDisplayTypeNone;
630 case DisplayType::kOverlay: {
631 return kTrackRendererDisplayTypeOverlay;
633 case DisplayType::kEvas: {
634 return kTrackRendererDisplayTypeEvas;
637 LOG_ERROR("unknown displaytype");
638 return kTrackRendererDisplayTypeNone;
642 TrackRendererDrmType ConvertToTrackRendererDrmType(const drm::Type& drm_type) {
644 case drm::Type::kNone: {
645 return kTrackRendererDrmTypeNone;
647 case drm::Type::kPlayready: {
648 return kTrackRendererDrmTypePlayready;
650 case drm::Type::kMarlin: {
651 return kTrackRendererDrmTypeMarlin;
653 case drm::Type::kVerimatrix: {
654 return kTrackRendererDrmTypeVerimatrix;
656 case drm::Type::kWidevineClassic: {
657 return kTrackRendererDrmTypeWidevineClassic;
659 case drm::Type::kSecuremedia: {
660 return kTrackRendererDrmTypeSecuremedia;
662 case drm::Type::kSdrm: {
663 return kTrackRendererDrmTypeSdrm;
665 case drm::Type::kWidevineCdm: {
666 return kTrackRendererDrmTypeWidevineCdm;
668 case drm::Type::kMax: {
669 return kTrackRendererDrmTypeDrmMax;
672 LOG_ERROR("unknown drmtype");
673 return kTrackRendererDrmTypeNone;
677 TrackRendererStillMode ConvertToTrackRendererStillMode(
678 const StillMode& still_mode) {
679 switch (still_mode) {
680 case StillMode::kNone: {
681 return kTrackRendererStillModeNone;
683 case StillMode::kOff: {
684 return kTrackRendererStillModeOff;
686 case StillMode::kOn: {
687 return kTrackRendererStillModeOn;
690 LOG_ERROR("unknown stillmode");
691 return kTrackRendererStillModeNone;
695 TrackRendererTrackType ConvertToTrackRendererTrackType(const TrackType& type) {
697 case TrackType::kTrackTypeAudio: {
698 return kTrackRendererTrackTypeAudio;
700 case TrackType::kTrackTypeVideo: {
701 return kTrackRendererTrackTypeVideo;
703 case TrackType::kTrackTypeSubtitle: {
704 return kTrackRendererTrackTypeSubtitle;
706 case TrackType::kTrackTypeMax: {
707 return kTrackRendererTrackTypeMax;
710 LOG_ERROR("unknown tracktype");
711 return kTrackRendererTrackTypeMax;
715 TrackRendererTrackType ConvertToTrackRendererTrackTypeFromStreamType(
716 const StreamType& type) {
718 case StreamType::kAudio: {
719 return kTrackRendererTrackTypeAudio;
721 case StreamType::kVideo: {
722 return kTrackRendererTrackTypeVideo;
724 case StreamType::kMax: {
725 return kTrackRendererTrackTypeMax;
728 LOG_ERROR("unknown steamtype");
729 return kTrackRendererTrackTypeMax;
733 TrackRendererVideoStreamRotation ConvertToTrackRendererVideoStreamRotation(
734 const VideoRotation& rotation) {
736 case VideoRotation::kVideoRotateNone: {
737 return kTrackRendererVideoStreamRotationNone;
739 case VideoRotation::kVideoRotate90: {
740 return kTrackRendererVideoStreamRotation90;
742 case VideoRotation::kVideoRotate180: {
743 return kTrackRendererVideoStreamRotation180;
745 case VideoRotation::kVideoRotate270: {
746 return kTrackRendererVideoStreamRotation270;
749 LOG_ERROR("unknown rotation type");
750 return kTrackRendererVideoStreamRotationNone;
755 #ifndef TRACKRENDERER_FEATURE_DEPRECATE_SUBTITLE_CB
756 boost::any SetSubtitleAttrValue(const TrackRendererSubtitleAttr& attr) {
757 boost::any any_value;
759 case kTrackRendererSubtitleAttrTypeRegionXPos: // fall through
760 case kTrackRendererSubtitleAttrTypeRegionYPos: // fall through
761 case kTrackRendererSubtitleAttrTypeRegionWidth: // fall through
762 case kTrackRendererSubtitleAttrTypeRegionHeight: // fall through
763 case kTrackRendererSubtitleAttrTypeWindowXPadding: // fall through
764 case kTrackRendererSubtitleAttrTypeWindowYPadding: // fall through
765 case kTrackRendererSubtitleAttrTypeWindowOpacity: // fall through
766 case kTrackRendererSubtitleAttrTypeWindowShowBg: // fall through
767 case kTrackRendererSubtitleAttrTypeFontSize: // fall through
768 case kTrackRendererSubtitleAttrTypeFontOpacity: // fall through
769 case kTrackRendererSubtitleAttrTypeFontBgOpacity: // fall through
770 case kTrackRendererSubtitleAttrTypeWebvttCueLine: // fall through
771 case kTrackRendererSubtitleAttrTypeWebvttCueSize: // fall through
772 case kTrackRendererSubtitleAttrTypeWebvttCuePosition: // fall through
773 case kTrackRendererSubtitleAttrTypeWebvttCueVertical: {
774 if (attr.value.f) any_value = attr.value.f;
777 case kTrackRendererSubtitleAttrTypeWindowLeftMargin: // fall through
778 case kTrackRendererSubtitleAttrTypeWindowRightMargin: // fall through
779 case kTrackRendererSubtitleAttrTypeWindowTopMargin: // fall through
780 case kTrackRendererSubtitleAttrTypeWindowBottomMargin: // fall through
781 case kTrackRendererSubtitleAttrTypeWindowBgColor: // fall through
782 case kTrackRendererSubtitleAttrTypeFontWeight: // fall through
783 case kTrackRendererSubtitleAttrTypeFontStyle: // fall through
784 case kTrackRendererSubtitleAttrTypeFontColor: // fall through
785 case kTrackRendererSubtitleAttrTypeFontBgColor: // fall through
786 case kTrackRendererSubtitleAttrTypeFontTextOutlineColor: // fall through
787 case kTrackRendererSubtitleAttrTypeFontTextOutlineThickness: // fall
789 case kTrackRendererSubtitleAttrTypeFontTextOutlineBlurRadius: // fall
791 case kTrackRendererSubtitleAttrTypeFontVerticalAlign: // fall through
792 case kTrackRendererSubtitleAttrTypeFontHorizontalAlign: // fall through
793 case kTrackRendererSubtitleAttrTypeWebvttCueLineNum: // fall through
794 case kTrackRendererSubtitleAttrTypeWebvttCueLineAlign: // fall through
795 case kTrackRendererSubtitleAttrTypeWebvttCueAlign: // fall through
796 case kTrackRendererSubtitleAttrTypeWebvttCuePositionAlign: {
797 if (attr.value.i32) any_value = attr.value.i32;
800 case kTrackRendererSubtitleAttrTypeFontFamily: // fall through
801 case kTrackRendererSubtitleAttrTypeRawSubtitle: {
802 if (attr.value.str) any_value = std::string(attr.value.str);
805 case kTrackRendererSubtitleAttrTypeTimestamp:
806 case kTrackRendererSubtitleAttrTypeExtsubIndex:
809 LOG_ERROR("Unknown subtitle attr type");
816 BufferStatus ConvertToBufferStatus(const TrackRendererBufferStatus& status) {
818 case kTrackRendererBufferStatusUnderrun: {
819 return BufferStatus::kUnderrun;
821 case kTrackRendererBufferStatusOverrun: {
822 return BufferStatus::kOverrun;
825 LOG_ERROR("Unknown buffern status");
826 return BufferStatus::kUnderrun;
829 TrackRendererCatchUpSpeed ConvertToTrackRendererCatchUpSpeed(
830 const CatchUpSpeed& level) {
832 case CatchUpSpeed::kNone: {
833 return kTrackRendererCatchUpSpeedNone;
835 case CatchUpSpeed::kSlow: {
836 return kTrackRendererCatchUpSpeedSlow;
838 case CatchUpSpeed::kNormal: {
839 return kTrackRendererCatchUpSpeedNormal;
841 case CatchUpSpeed::kFast: {
842 return kTrackRendererCatchUpSpeedFast;
845 LOG_ERROR("Unknown catch up speed");
846 return kTrackRendererCatchUpSpeedNone;
849 LatencyStatus ConvertToLatencyStatus(const TrackRendererLatencyStatus& status) {
851 case kTrackRendererLatencyStatusLow: {
852 return LatencyStatus::kLow;
854 case kTrackRendererLatencyStatusMid: {
855 return LatencyStatus::kMid;
857 case kTrackRendererLatencyStatusHigh: {
858 return LatencyStatus::kHigh;
861 LOG_ERROR("Unknown status");
862 return LatencyStatus::kLow;
865 AudioEasingType ConvertToAudioEasingType(
866 const TrackRendererAudioEasingType& type) {
868 case TrackRendererAudioEasingType::kTrackRendererAudioEasingLinear: {
869 return AudioEasingType::kAudioEasingLinear;
871 case TrackRendererAudioEasingType::kTrackRendererAudioEasingIncubic: {
872 return AudioEasingType::kAudioEasingIncubic;
874 case TrackRendererAudioEasingType::kTrackRendererAudioEasingOutcubic: {
875 return AudioEasingType::kAudioEasingOutcubic;
878 LOG_ERROR("Unknown audio easing type");
879 return AudioEasingType::kAudioEasingNone;
883 TrackRendererAudioEasingType ConvertToTrackRendererAudioEasingType(
884 const AudioEasingType& type) {
886 case AudioEasingType::kAudioEasingLinear: {
887 return TrackRendererAudioEasingType::kTrackRendererAudioEasingLinear;
889 case AudioEasingType::kAudioEasingIncubic: {
890 return TrackRendererAudioEasingType::kTrackRendererAudioEasingIncubic;
892 case AudioEasingType::kAudioEasingOutcubic: {
893 return TrackRendererAudioEasingType::kTrackRendererAudioEasingOutcubic;
896 LOG_ERROR("Unknown audio easing type");
897 return TrackRendererAudioEasingType::kTrackRendererAudioEasingNone;
901 bool ConvertToTrackRendererRscType(const RscType& typevalue,
902 TrackRendererRscType* type) {
904 case RscType::kVideoRenderer: {
905 *type = kTrackRendererRscTypeVideoRenderer;
909 LOG_ERROR("unknown resource type");
914 bool ConvertToTrackRendererAdvPictureQualityType(
915 const AdvPictureQualityType& typevalue,
916 TrackRendererAdvPictureQualityType* type) {
918 case AdvPictureQualityType::kVideoCall: {
919 *type = kTrackRendererAdvPictureQualityTypeVideoCall;
922 case AdvPictureQualityType::kUsbCamera: {
923 *type = kTrackRendererAdvPictureQualityTypeUsbCamera;
926 case AdvPictureQualityType::kAirplayMirroring: {
927 *type = kTrackRendererAdvPictuerQualityTypeAirplayMirroring;
931 LOG_ERROR("unknown resource type");
936 bool ConvertToTrackRendererRscAllocPolicy(const RscAllocPolicy& policyvalue,
937 TrackRendererRscAllocPolicy* policy) {
938 switch (policyvalue) {
939 case RscAllocPolicy::kRscAllocExclusive: {
940 *policy = kTrackRendererRscAllocExclusive;
943 case RscAllocPolicy::kRscAllocConditional: {
944 *policy = kTrackRendererRscAllocConditional;
947 case RscAllocPolicy::kRscAllocInAppMultiview: {
948 *policy = kTrackRendererRscAllocInAppMultiview;
951 case RscAllocPolicy::kRscAllocExclusiveMfcForced: {
952 *policy = kTrackRendererRscAllocExclusiveMfcForced;
956 LOG_ERROR("unknown policy");
961 bool ConvertToTrackRendererAlternativeAudioResource(
962 const PlayerAudioResourceType& typevalue, unsigned int* type) {
964 case kPlayerAudioResourceTypeMain:
967 case kPlayerAudioResourceTypeSubDecoder:
970 case kPlayerAudioResourceTypeSimpleMixOut:
974 LOG_ERROR("unkown type");
979 } // namespace adapter_utils
981 } // namespace esplusplayer