194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten/*
294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * Copyright (C) 2010 The Android Open Source Project
394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten *
494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * you may not use this file except in compliance with the License.
694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * You may obtain a copy of the License at
794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten *
894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten *
1094a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * Unless required by applicable law or agreed to in writing, software
1194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
1294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * See the License for the specific language governing permissions and
1494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten * limitations under the License.
1594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten */
1694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
1794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten/** \file CMediaPlayer.c MediaPlayer class */
1894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
1994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten#include "sles_allinclusive.h"
2094a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
2194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten#ifdef ANDROID
222b06e20ae32388f6e1dfd088d9773c34e6b1cb45Jean-Michel Trivi#include "android/android_GenericMediaPlayer.h"
2394a37e8117fb72790882dfb815f99e2365754c74Glenn Kastenusing namespace android;
2494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten#endif
2594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
2694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
2794a37e8117fb72790882dfb815f99e2365754c74Glenn KastenXAresult CMediaPlayer_Realize(void *self, XAboolean async)
2894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten{
290e47a0657162bbff48886ea2f5c68d9edb607768Jean-Michel Trivi    XAresult result = XA_RESULT_SUCCESS;
30eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
31eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef ANDROID
3271139e6bc1f077d285fb04629925d99383d1114fGlenn Kasten    CMediaPlayer *thiz = (CMediaPlayer *) self;
3371139e6bc1f077d285fb04629925d99383d1114fGlenn Kasten
340e47a0657162bbff48886ea2f5c68d9edb607768Jean-Michel Trivi    // realize player
35eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    result = android_Player_realize(thiz, async);
3694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten#endif
370e47a0657162bbff48886ea2f5c68d9edb607768Jean-Michel Trivi
38eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    return result;
3994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten}
4094a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
4194a37e8117fb72790882dfb815f99e2365754c74Glenn KastenXAresult CMediaPlayer_Resume(void *self, XAboolean async)
4294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten{
4394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten    return XA_RESULT_SUCCESS;
4494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten}
4594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
4694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
4794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten/** \brief Hook called by Object::Destroy when a media player is destroyed */
4894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
4994a37e8117fb72790882dfb815f99e2365754c74Glenn Kastenvoid CMediaPlayer_Destroy(void *self)
5094a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten{
51bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    CMediaPlayer *thiz = (CMediaPlayer *) self;
52bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    freeDataLocatorFormat(&thiz->mDataSource);
53bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    freeDataLocatorFormat(&thiz->mBankSource);
54bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    freeDataLocatorFormat(&thiz->mAudioSink);
55bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    freeDataLocatorFormat(&thiz->mImageVideoSink);
56bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    freeDataLocatorFormat(&thiz->mVibraSink);
57bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    freeDataLocatorFormat(&thiz->mLEDArraySink);
5897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi#ifdef ANDROID
59bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    android_Player_destroy(thiz);
6097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi#endif
6194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten}
6294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
6394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten
641d081e49a10543018e1ae33792bd3d30504719baGlenn Kastenpredestroy_t CMediaPlayer_PreDestroy(void *self)
6594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten{
66485a038f9f0f898227b8ab4218e94c5d56b6ed0bGlenn Kasten#ifdef ANDROID
677da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten    CMediaPlayer *thiz = (CMediaPlayer *) self;
68485a038f9f0f898227b8ab4218e94c5d56b6ed0bGlenn Kasten    android_Player_preDestroy(thiz);
69485a038f9f0f898227b8ab4218e94c5d56b6ed0bGlenn Kasten#endif
701d081e49a10543018e1ae33792bd3d30504719baGlenn Kasten    return predestroy_ok;
7194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten}
72