Ich verwende derzeit Mediacodec für Live-View-Hardware-Decodierung. Code wie folgt aussiehtKann ich auf einer Oberfläche zeichnen, nachdem ich den Mediacodec veröffentlicht habe, der es verwendet
mMediaCodecDecoder = MediaCodec.createDecoderByType(MIME_TYPE);
format = MediaFormat.createVideoFormat(MIME_TYPE, mLiveViewBuff.frameData.picWidth, mLiveViewBuff.frameData.picHeight);
if (mSurfaceHolder.getSurface().isValid()) {
mMediaCodecDecoder.configure(format, mSurfaceHolder.getSurface(), null, 0);
}
mMediaCodecDecoder.start();
decoderInputBuffers = mMediaCodecDecoder.getInputBuffers();
decoderOutputBuffers = mMediaCodecDecoder.getOutputBuffers();
decoderConfigured = true;
Und irgendwann, entscheide ich, wie diese dann danach
mMediaCodecDecoder.stop();
mMediaCodecDecoder.release();
mMediaCodecDecoder = null;
die Mediacodec lösen Ich möchte die Oberflächenansicht löschen, indem Sie diese, bevor ich will Erstellen Sie einen anderen Mediacodec für eine andere Liveview-Hardware-Decodierung.
Canvas canvas = mSurfaceHolder.lockCanvas();
canvas.drawColor(getResources().getColor(R.color.WHITE));
mSurfaceHolder.unlockCanvasAndPost(canvas);
aber ich habe einige Fehler connect(P): already connected
eine lange Geschichte im Grunde kurz
Also, ich habe 2 h264 Livefeed mediacodec verwenden Hardwaredekodierung zu tun und auf Surface spielen. zwischen den Spielen möchte ich die Oberflächenansicht löschen, indem ich reines Schwarz auf die Leinwand zeichne.
Bitte geben Sie mir einige Ratschläge Dank