Что означает SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS? - PullRequest
9 голосов
/ 19 августа 2010

Я пытаюсь отобразить отфильтрованный предварительный просмотр камеры, используя обратный вызов onPreviewFrame ().

Проблема в том, что когда я удаляю эту строку: mHolder.setType (SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

чтобы скрыть предпросмотр, приложение вылетает. Журнал гласит: 08-19 15: 57: 51.042: ОШИБКА / CameraService (59): сбой регистрации буферов со статусом -38

Что это значит? Это где-нибудь задокументировано?

Я использую CameraPreview из SDK APIDemos: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

Ответы [ 3 ]

9 голосов
/ 22 августа 2011

SURFACE_TYPE_PUSH_BUFFERS генерирует несколько буферов для SurfaceView. Компоненты блокируют (заполняют данными) и помещают (отображают данные) эти буферы глубоко в код ОС. Особенно OpenMax (интерфейс аппаратного устройства камеры) использует «графические буферы» = «push-буферы» для заполнения данных и отображения данных. В частности, оборудование камеры может напрямую заполнять push-буфер, а графическое оборудование может отображать push-буфер напрямую (они совместно используют эти буферы). Вывод: ОС заставляет вас создавать SurfaceView с push-буферами. Затем он может использовать буферы для устройства камеры.

8 голосов
/ 10 января 2012

В Справочник камеры Google вы можете найти краткое упоминание об этом. Согласно руководству SURFACE_TYPE_PUSH_BUFFERS является устаревшей настройкой, необходимой для устройств до версии 3.0.

Посмотрите на пример кода в разделе «Создание класса предварительного просмотра», внизу конструктора написано:

// deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

Рекомендуется внимательно прочитать руководство по камере , если вы этого еще не сделали, оно содержит некоторые важные вещи, которых нет в документации API классов Camera.

5 голосов
/ 20 августа 2010

Что это значит?

Это означает, что вы неправильно настроили SurfaceView через SurfaceHolder.

Это задокументированогде-нибудь?

Что такое "это"?Вот документация для SurfaceView, SurfaceHolder, SURFACE_TYPE_PUSH_BUFFERS и Camera.

Если ваш настоящий вопрос «где задокументировано, что для Camera требуется SURFACE_TYPE_PUSH_BUFFERS», я подозреваю, что это недокументировано.Вы используете SURFACE_TYPE_PUSH_BUFFERS для предварительного просмотра камеры и воспроизведения видео, а также, возможно, в других ситуациях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...