MCPcopy Create free account
hub / github.com/android/ndk-samples / handle

Method handle

native-codec/app/src/main/cpp/native-codec-jni.cpp:151–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

149}
150
151void mylooper::handle(int what, void* obj) {
152 switch (what) {
153 case kMsgCodecBuffer:
154 doCodecWork((workerdata*)obj);
155 break;
156
157 case kMsgDecodeDone: {
158 workerdata* d = (workerdata*)obj;
159 AMediaCodec_stop(d->codec);
160 AMediaCodec_delete(d->codec);
161 AMediaExtractor_delete(d->ex);
162 d->sawInputEOS = true;
163 d->sawOutputEOS = true;
164 } break;
165
166 case kMsgSeek: {
167 workerdata* d = (workerdata*)obj;
168 AMediaExtractor_seekTo(d->ex, 0, AMEDIAEXTRACTOR_SEEK_NEXT_SYNC);
169 AMediaCodec_flush(d->codec);
170 d->renderstart = -1;
171 d->sawInputEOS = false;
172 d->sawOutputEOS = false;
173 if (!d->isPlaying) {
174 d->renderonce = true;
175 post(kMsgCodecBuffer, d);
176 }
177 LOGV("seeked");
178 } break;
179
180 case kMsgPause: {
181 workerdata* d = (workerdata*)obj;
182 if (d->isPlaying) {
183 // flush all outstanding codecbuffer messages with a no-op message
184 d->isPlaying = false;
185 post(kMsgPauseAck, NULL, true);
186 }
187 } break;
188
189 case kMsgResume: {
190 workerdata* d = (workerdata*)obj;
191 if (!d->isPlaying) {
192 d->renderstart = -1;
193 d->isPlaying = true;
194 post(kMsgCodecBuffer, d);
195 }
196 } break;
197 }
198}
199
200jboolean CreateStreamingMediaPlayer(JNIEnv* env, jclass, jobject assetMgr,
201 jstring filename) {

Callers

nothing calls this directly

Calls 1

doCodecWorkFunction · 0.85

Tested by

no test coverage detected