void CedarXPlayer::reset() { //Mutex::Autolock autoLock(mLock); LOGV("RESET????, context: %p",this); if(mPlayer != NULL) { mPlayer->control(mPlayer, CDX_CMD_RESET, 0, 0); if(isCedarXInitialized) { mPlayer->control(mPlayer, CDX_CMD_STOP_ASYNC, 0, 0); CDXPlayer_Destroy(mPlayer); mPlayer = NULL; isCedarXInitialized = false; } } reset_l(); }
CedarXPlayer::CedarXPlayer() : mQueueStarted(false), mVideoRendererIsPreview(false), mAudioPlayer(NULL), mFlags(0), mExtractorFlags(0), mCanSeek(0) { LOGV("Construction"); mExtendMember = (CedarXPlayerExtendMember *)malloc(sizeof(CedarXPlayerExtendMember)); reset_l(); CDXPlayer_Create((void**)&mPlayer); mPlayer->control(mPlayer, CDX_CMD_REGISTER_CALLBACK, (unsigned int)&CedarXPlayerCallbackWrapper, (unsigned int)this); isCedarXInitialized = true; mMaxOutputWidth = 0; mMaxOutputHeight = 0; mDisableXXXX = 0; _3d_mode = 0; display_3d_mode = 0; anaglagh_type = 0; anaglagh_en = 0; wait_anaglagh_display_change = 0; }
status_t MediaPlayer::reset() { ALOGV("reset"); Mutex::Autolock _l(mLock); return reset_l(); }
AAH_RXPlayer::~AAH_RXPlayer() { reset_l(); CHECK(substreams_.size() == 0); omx_.disconnect(); }
status_t AAH_RXPlayer::reset() { AutoMutex api_lock(&api_lock_); reset_l(); return OK; }
bool HDMIAudioCaps::loadCaps(int ALSADeviceID) { bool ret = false; struct mixer* mixer = NULL; struct mixer_ctl* ctrls[kCtrlCount] = {NULL}; int tmp, mode_cnt; Mutex::Autolock _l(mLock); ALOGE("%s: start", __func__); reset_l(); // Open the mixer for the chosen ALSA device if (NULL == (mixer = mixer_open(ALSADeviceID))) { ALOGE("%s: mixer_open(%d) failed", __func__, ALSADeviceID); goto bailout; } // Gather handles to all of the controls we will need in order to enumerate // the audio capabilities of this HDMI link. No need to free/release these // later, they are just pointers into the tinyalsa mixer structure itself. for (size_t i = 0; i < kCtrlCount; ++i) { ctrls[i] = mixer_get_ctl_by_name(mixer, kCtrlNames[i]); if (NULL == ctrls[i]) { ALOGE("%s: mixer_get_ctrl_by_name(%s) failed", __func__, kCtrlNames[i]); goto bailout; } } // Start by checking to see if this HDMI connection supports even basic // audio. If it does not, there is no point in proceeding. if ((tmp = mixer_ctl_get_value(ctrls[kBasicAudNdx], 0)) <= 0) { ALOGI("%s: Basic audio not supported by attached device", __func__); goto bailout; } // Looks like we support basic audio. Get a count of the available // non-basic modes. mBasicAudioSupported = true; if ((mode_cnt = mixer_ctl_get_value(ctrls[kModeCntNdx], 0)) < 0) goto bailout; // Fetch the speaker allocation data block, if available. if ((tmp = mixer_ctl_get_value(ctrls[kSpeakerAlloc], 0)) < 0) goto bailout; mSpeakerAlloc = static_cast<uint16_t>(tmp); ALOGI("%s: Speaker Allocation Map for attached device is: 0x%hx", __func__, mSpeakerAlloc); // If there are no non-basic modes available, then we are done. Be sure to // flag this as a successful operation. if (!mode_cnt) { ret = true; goto bailout; } // Now enumerate the non-basic modes. Any errors at this point in time // should indicate that the HDMI cable was unplugged and we should just // abort with an empty set of audio capabilities. for (int i = 0; i < mode_cnt; ++i) { Mode m; // Pick the mode we want to fetch info for. if (mixer_ctl_set_value(ctrls[kModeSelNdx], 0, i) < 0) goto bailout; // Now fetch the common fields. if ((tmp = mixer_ctl_get_value(ctrls[kFmtNdx], 0)) < 0) goto bailout; m.fmt = static_cast<AudFormat>(tmp); ALOGI("Got mode %d from ALSA driver.", m.fmt); if ((tmp = mixer_ctl_get_value(ctrls[kMaxChCntNdx], 0)) < 0) goto bailout; m.max_ch = static_cast<uint32_t>(tmp); if ((tmp = mixer_ctl_get_value(ctrls[kSampRateNdx], 0)) < 0) goto bailout; m.sr_bitmask = static_cast<uint32_t>(tmp); // Now for the mode dependent fields. Only LPCM has the bits-per-sample // mask. Only AC3 through ATRAC have the compressed bitrate field. m.bps_bitmask = 0; m.comp_bitrate = 0; if (m.fmt == kFmtLPCM) { if ((tmp = mixer_ctl_get_value(ctrls[kBPSNdx], 0)) < 0) goto bailout; m.bps_bitmask = static_cast<uint32_t>(tmp); } else if ((m.fmt >= kFmtAC3) && (m.fmt <= kFmtATRAC)) { // FIXME ATRAC is not last format!? if ((tmp = mixer_ctl_get_value(ctrls[kMaxCompBRNdx], 0)) < 0) goto bailout; m.comp_bitrate = static_cast<uint32_t>(tmp); } // Finally, sanity check the info. If it passes, add it to the vector // of available modes. if (sanityCheckMode(m)) { ALOGI("Passed sanity check for mode %d from ALSA driver.", m.fmt); mModes.add(m); } } // Looks like we managed to enumerate all of the modes before someone // unplugged the HDMI cable. Signal success and get out. ret = true; bailout: if (NULL != mixer) mixer_close(mixer); if (!ret) reset_l(); return ret; }
void HDMIAudioCaps::reset() { Mutex::Autolock _l(mLock); reset_l(); }