Это следующий вопрос: this question.TextureView с декодером MediaCodec для потоков H264
Это мой TextureView
код:
public class VideoTextureView extends TextureView implements SurfaceTextureListener{
private static final String LOG_TAG = VideoTextureView.class.getSimpleName();
private MediaCodecDecoder mMediaDecoder;
private MediaCodecAsyncDecoder mMediaAsyncDecoder;
public VideoTextureView(Context context, AttributeSet attrs) {
super(context, attrs);
setSurfaceTextureListener(this);
Log.d(LOG_TAG, "Video texture created.");
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Log.d(LOG_TAG, "Surface Available: " + width + " x " + height);
mMediaDecoder = new MediaCodecDecoder();
mMediaDecoder.Start();
mMediaDecoder.SetSurface(new Surface(getSurfaceTexture()));
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mMediaDecoder.Stop();
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
// TODO Auto-generated method stub
}
}
Моего вопрос - Является ли моя TextureView
реализации хорошо для рендеринга H264 потоков декодированных MediaCodec
? Или мне нужно настроить EGL или что-нибудь еще?
Заранее благодарен!
Настройка EGL необходима только при рендеринге с помощью GLES. TextureView объединяет SurfaceTexture с пользовательским представлением и делает рендеринг GLES для вас. Именно поэтому View * должен * быть аппаратно ускоренным для TextureView для работы. – fadden
@fadden Спасибо! Итак, мне не нужно настраивать контекст EGL :) Утром я попытался с помощью SurfaceView и установил 'Surface' с помощью' SurfaceHolder.getSurface() 'и нашел тот же результат. Поэтому я думаю, что код, связанный с TextureView, не является проблемой. «Вот почему View должен быть аппаратно ускорен для работы TextureView», - заявил он также на веб-сайте разработчика Android. Означает ли это, что мне нужно установить аппаратное ускорение на 'true' в уровне представления файла манифеста? –
Я думаю, что он включен по умолчанию в последних версиях Android, но вам может потребоваться его явно для старых устройств. См. Http://developer.android.com/guide/topics/graphics/hardware-accel.html – fadden