/** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. This function retrieves the user readable name of the controller specified by ControllerHandle and ChildHandle in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the controller name is returned in ControllerName, and EFI_SUCCESS is returned. If the driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle, then EFI_UNSUPPORTED is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned. @param[in] This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance. @param[in] ControllerHandle The handle of a controller that the driver specified by This is managing. This handle specifies the controller whose name is to be returned. @param[in] ChildHandle The handle of the child controller to retrieve the name of. This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for a bus drivers that wish to retrieve the name of the bus controller. It will not be NULL for a bus driver that wishes to retrieve the name of a child controller. @param[in] Language A pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format. @param[out] ControllerName A pointer to the Unicode string to return. This Unicode string is the name of the controller specified by ControllerHandle and ChildHandle in the language specified by Language from the point of view of the driver specified by This. @retval EFI_SUCCESS The Unicode string for the user readable name in the language specified by Language for the driver specified by This was returned in DriverName. @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE. @retval EFI_INVALID_PARAMETER Language is NULL. @retval EFI_INVALID_PARAMETER ControllerName is NULL. @retval EFI_UNSUPPORTED The driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle. @retval EFI_UNSUPPORTED The driver specified by This does not support the language specified by Language. **/ EFI_STATUS EFIAPI Ip4ComponentNameGetControllerName ( IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName ) { EFI_STATUS Status; EFI_IP4_PROTOCOL *Ip4; // // Only provide names for child handles. // if (ChildHandle == NULL) { return EFI_UNSUPPORTED; } // // Make sure this driver produced ChildHandle // Status = EfiTestChildHandle ( ControllerHandle, ChildHandle, &gEfiManagedNetworkProtocolGuid ); if (EFI_ERROR (Status)) { return Status; } // // Retrieve an instance of a produced protocol from ChildHandle // Status = gBS->OpenProtocol ( ChildHandle, &gEfiIp4ProtocolGuid, (VOID **)&Ip4, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (EFI_ERROR (Status)) { return Status; } // // Update the component name for this child handle. // Status = UpdateName (Ip4); if (EFI_ERROR (Status)) { return Status; } return LookupUnicodeString2 ( Language, This->SupportedLanguages, gIp4ControllerNameTable, ControllerName, (BOOLEAN)(This == &gIp4ComponentName) ); }
void CDVDVideoCodecFFmpeg::SetHardware(IHardwareDecoder* hardware) { SAFE_RELEASE(m_pHardware); m_pHardware = hardware; UpdateName(); }
/* Convert the event from the callbacks in actions */ void InputManager::customEvent( QEvent *event ) { int i_type = event->type(); IMEvent *ple = static_cast<IMEvent *>(event); if( i_type == IMEvent::ItemChanged ) UpdateMeta( ple->item() ); if( !hasInput() ) return; /* Actions */ switch( i_type ) { case IMEvent::PositionUpdate: UpdatePosition(); break; case IMEvent::StatisticsUpdate: UpdateStats(); break; case IMEvent::ItemChanged: /* Ignore ItemChanged_Type event that does not apply to our input */ if( p_item == ple->item() ) { UpdateStatus(); // UpdateName(); UpdateArt(); UpdateMeta(); /* Update duration of file */ } break; case IMEvent::ItemStateChanged: UpdateStatus(); break; case IMEvent::NameChanged: UpdateName(); break; case IMEvent::MetaChanged: UpdateMeta(); UpdateName(); /* Needed for NowPlaying */ UpdateArt(); /* Art is part of meta in the core */ break; case IMEvent::InfoChanged: UpdateInfo(); break; case IMEvent::ItemTitleChanged: UpdateNavigation(); UpdateName(); /* Display the name of the Chapter, if exists */ break; case IMEvent::ItemRateChanged: UpdateRate(); break; case IMEvent::ItemEsChanged: UpdateTeletext(); // We don't do anything ES related. Why ? break; case IMEvent::ItemTeletextChanged: UpdateTeletext(); break; case IMEvent::InterfaceVoutUpdate: UpdateVout(); break; case IMEvent::SynchroChanged: emit synchroChanged(); break; case IMEvent::CachingEvent: UpdateCaching(); break; case IMEvent::BookmarksChanged: emit bookmarksChanged(); break; case IMEvent::InterfaceAoutUpdate: UpdateAout(); break; case IMEvent::RecordingEvent: UpdateRecord(); break; case IMEvent::ProgramChanged: UpdateProgramEvent(); break; case IMEvent::EPGEvent: UpdateEPG(); break; default: msg_Warn( p_intf, "This shouldn't happen: %i", i_type ); assert(0); } }
bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options) { m_hints = hints; m_options = options; AVCodec* pCodec; m_iOrientation = hints.orientation; for(std::vector<ERenderFormat>::iterator it = options.m_formats.begin(); it != options.m_formats.end(); ++it) { m_formats.push_back((AVPixelFormat)CDVDCodecUtils::PixfmtFromEFormat(*it)); if(*it == RENDER_FMT_YUV420P) m_formats.push_back(AV_PIX_FMT_YUVJ420P); } m_formats.push_back(AV_PIX_FMT_NONE); /* always add none to get a terminated list in ffmpeg world */ pCodec = avcodec_find_decoder(hints.codec); if(pCodec == NULL) { CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Unable to find codec %d", hints.codec); return false; } CLog::Log(LOGNOTICE,"CDVDVideoCodecFFmpeg::Open() Using codec: %s",pCodec->long_name ? pCodec->long_name : pCodec->name); m_pCodecContext = avcodec_alloc_context3(pCodec); m_pCodecContext->opaque = (void*)this; m_pCodecContext->debug_mv = 0; m_pCodecContext->debug = 0; m_pCodecContext->workaround_bugs = FF_BUG_AUTODETECT; m_pCodecContext->get_format = GetFormat; m_pCodecContext->codec_tag = hints.codec_tag; // setup threading model if (!hints.software) { bool tryhw = false; #ifdef HAVE_LIBVDPAU if(CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVDPAU)) tryhw = true; #endif #ifdef HAVE_LIBVA if(CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVAAPI)) tryhw = true; #endif #ifdef HAS_DX if(CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEDXVA2)) tryhw = true; #endif #ifdef TARGET_DARWIN_OSX if(CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVDA)) tryhw = true; #endif if (tryhw && m_decoderState == STATE_NONE) { m_decoderState = STATE_HW_SINGLE; } else { int num_threads = std::min(8 /*MAX_THREADS*/, g_cpuInfo.getCPUCount()); if( num_threads > 1) m_pCodecContext->thread_count = num_threads; m_pCodecContext->thread_safe_callbacks = 1; m_decoderState = STATE_SW_MULTI; CLog::Log(LOGDEBUG, "CDVDVideoCodecFFmpeg - open frame threaded with %d threads", num_threads); } } else m_decoderState = STATE_SW_SINGLE; #if defined(TARGET_DARWIN_IOS) // ffmpeg with enabled neon will crash and burn if this is enabled m_pCodecContext->flags &= CODEC_FLAG_EMU_EDGE; #else if (pCodec->id != AV_CODEC_ID_H264 && pCodec->capabilities & CODEC_CAP_DR1 && pCodec->id != AV_CODEC_ID_VP8 ) m_pCodecContext->flags |= CODEC_FLAG_EMU_EDGE; #endif // if we don't do this, then some codecs seem to fail. m_pCodecContext->coded_height = hints.height; m_pCodecContext->coded_width = hints.width; m_pCodecContext->bits_per_coded_sample = hints.bitsperpixel; if( hints.extradata && hints.extrasize > 0 ) { m_pCodecContext->extradata_size = hints.extrasize; m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + FF_INPUT_BUFFER_PADDING_SIZE); memcpy(m_pCodecContext->extradata, hints.extradata, hints.extrasize); } // advanced setting override for skip loop filter (see avcodec.h for valid options) // TODO: allow per video setting? if (g_advancedSettings.m_iSkipLoopFilter != 0) { m_pCodecContext->skip_loop_filter = (AVDiscard)g_advancedSettings.m_iSkipLoopFilter; } // set any special options for(std::vector<CDVDCodecOption>::iterator it = options.m_keys.begin(); it != options.m_keys.end(); ++it) { if (it->m_name == "surfaces") m_uSurfacesCount = atoi(it->m_value.c_str()); else av_opt_set(m_pCodecContext, it->m_name.c_str(), it->m_value.c_str(), 0); } if (avcodec_open2(m_pCodecContext, pCodec, NULL) < 0) { CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Unable to open codec"); return false; } m_pFrame = av_frame_alloc(); if (!m_pFrame) return false; m_pFilterFrame = av_frame_alloc(); if (!m_pFilterFrame) return false; UpdateName(); return true; }
/** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. This function retrieves the user readable name of the controller specified by ControllerHandle and ChildHandle in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the controller name is returned in ControllerName, and EFI_SUCCESS is returned. If the driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle, then EFI_UNSUPPORTED is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned. Currently not implemented. @param[in] This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance. @param[in] ControllerHandle The handle of a controller that the driver specified by This is managing. This handle specifies the controller whose name is to be returned. @param[in] ChildHandle The handle of the child controller to retrieve the name of. This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for a bus drivers that wish to retrieve the name of the bus controller. It will not be NULL for a bus driver that wishes to retrieve the name of a child controller. @param[in] Language A pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format. @param[out] ControllerName A pointer to the Unicode string to return. This Unicode string is the name of the controller specified by ControllerHandle and ChildHandle in the language specified by Language from the point of view of the driver specified by This. @retval EFI_SUCCESS The Unicode string for the user readable name specified by This, ControllerHandle, ChildHandle, and Language was returned in ControllerName. @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE. @retval EFI_INVALID_PARAMETER Language is NULL. @retval EFI_INVALID_PARAMETER ControllerName is NULL. @retval EFI_UNSUPPORTED The driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle. @retval EFI_UNSUPPORTED The driver specified by This does not support the language specified by Language. **/ EFI_STATUS EFIAPI MnpComponentNameGetControllerName ( IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName ) { EFI_STATUS Status; EFI_MANAGED_NETWORK_PROTOCOL *Mnp; // // Only provide names for MNP child handles. // if (ChildHandle == NULL) { return EFI_UNSUPPORTED; } // // Make sure this driver is currently managing ControllerHandle // Status = EfiTestManagedDevice ( ControllerHandle, gMnpDriverBinding.DriverBindingHandle, &gEfiSimpleNetworkProtocolGuid ); if (EFI_ERROR (Status)) { return Status; } // // Make sure this driver produced ChildHandle // Status = EfiTestChildHandle ( ControllerHandle, ChildHandle, &gEfiManagedNetworkServiceBindingProtocolGuid ); if (EFI_ERROR (Status)) { return Status; } // // Retrieve an instance of a produced protocol from ChildHandle // Status = gBS->OpenProtocol ( ChildHandle, &gEfiManagedNetworkProtocolGuid, (VOID **)&Mnp, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (EFI_ERROR (Status)) { return Status; } // // Update the component name for this child handle. // Status = UpdateName (Mnp); if (EFI_ERROR (Status)) { return Status; } return LookupUnicodeString2 ( Language, This->SupportedLanguages, gMnpControllerNameTable, ControllerName, (BOOLEAN)(This == &gMnpComponentName) ); }