camera_device_ops Informacje o strukturze
#include < camera.h >
Pola danych | |
int(* | set_preview_window )(struct camera_device *, struct preview_stream_ops *window) |
próżnia(* | set_callbacks )(struct camera_device *, camera_notify_callback notification_cb, camera_data_callback data_cb, camera_data_timestamp_callback data_cb_timestamp, camera_request_memory get_memory, void *user) |
próżnia(* | enable_msg_type )(struct camera_device *, int32_t msg_type) |
próżnia(* | disable_msg_type )(struct camera_device *, int32_t msg_type) |
int(* | msg_type_enabled )(struct camera_device *, int32_t msg_type) |
int(* | start_preview )(struct camera_device *) |
próżnia(* | stop_preview )(struct camera_device *) |
int(* | Preview_enabled )(struct camera_device *) |
int(* | store_meta_data_in_buffers )(struct camera_device *, int enable) |
int(* | start_recording )(struct camera_device *) |
próżnia(* | stop_recording )(struct camera_device *) |
int(* | nagrywanie_włączone )(struct camera_device *) |
próżnia(* | release_recording_frame )(struct camera_device *, const void *opaque) |
int(* | auto_focus )(struct camera_device *) |
int(* | cancel_auto_focus )(struct camera_device *) |
int(* | zrób_zdjęcie )(struct camera_device *) |
int(* | cancel_picture )(struct camera_device *) |
int(* | set_parameters )(struct camera_device *, const char *parms) |
znak *(* | get_parameters )(struct camera_device *) |
próżnia(* | put_parameters )(struct camera_device *, char *) |
int(* | send_command )(struct camera_device *, int32_t cmd, int32_t arg1, int32_t arg2) |
próżnia(* | release )(struct camera_device *) |
int(* | dump )(struct camera_device *, int fd) |
szczegółowy opis
Dokumentacja terenowa
int(* auto_focus)(struct camera_device *) |
int(* cancel_auto_focus)(struct camera_device *) |
Anuluje funkcję autofokusa. Jeśli autofokus jest nadal w toku, ta funkcja anuluje go. Niezależnie od tego, czy autofokus jest w toku, czy nie, ta funkcja przywróci domyślne położenie ostrości. Jeśli aparat nie obsługuje automatycznego ustawiania ostrości, oznacza to brak operacji.
int(* cancel_picture)(struct camera_device *) |
void(* disable_msg_type)(struct camera_device *, int32_t msg_type) |
Wyłącz wiadomość lub zestaw wiadomości.
Po otrzymaniu wywołania disableMsgType(CAMERA_MSG_VIDEO_FRAME), warstwa HAL kamery nie powinna polegać na swoim kliencie, aby wywołać releaseRecordingFrame() w celu zwolnienia klatek nagrywania wideo wysyłanych przez warstwę HAL kamery przed i po wywołaniu disableMsgType(CAMERA_MSG_VIDEO_FRAME). Klienci kamery HAL nie mogą modyfikować ani uzyskiwać dostępu do żadnej klatki nagrywania wideo po wywołaniu disableMsgType(CAMERA_MSG_VIDEO_FRAME).
int(* dump)(struct camera_device *, int fd) |
void(* enable_msg_type)(struct camera_device *, int32_t msg_type) |
char*(* get_parameters)(struct camera_device *) |
int(* msg_type_enabled)(struct camera_device *, int32_t msg_type) |
int(* preview_enabled)(struct camera_device *) |
void(* put_parameters)(struct camera_device *, char *) |
Kamera HAL używa własnej pamięci, aby przekazać nam parametry, gdy wywołujemy get_parameters. Użyj tej funkcji, aby zwrócić pamięć z powrotem do kamery HAL, jeśli put_parameters nie ma wartości NULL. Jeśli put_parameters ma wartość NULL, musisz użyć free(), aby zwolnić pamięć.
int(* nagrywanie_włączone)(struct camera_device *) |
void(* release)(struct camera_device *) |
void(* release_recording_frame)(struct camera_device *, const void *opaque) |
Zwolnij ramkę rekordu zwróconą wcześniej przez CAMERA_MSG_VIDEO_FRAME.
Obowiązkiem klienta warstwy HAL kamery jest zwolnienie klatek nagrywania wideo wysłanych przez warstwę HAL kamery, zanim kamera HAL otrzyma wezwanie do wyłączenia MsgType (CAMERA_MSG_VIDEO_FRAME). Po odebraniu wywołania wyłączenia MsgType (CAMERA_MSG_VIDEO_FRAME) za zarządzanie cyklem życia klatek nagrywania wideo odpowiada warstwa HAL kamery.
int(* send_command)(struct camera_device *, int32_t cmd, int32_t arg1, int32_t arg2) |
void(* set_callbacks)(struct camera_device *, camera_notify_callback notification_cb, camera_data_callback data_cb, camera_data_timestamp_callback data_cb_timestamp, camera_request_memory get_memory, void *user) |
int(* set_parameters)(struct camera_device *, const char *parms) |
int(* set_preview_window)(struct camera_device *, struct preview_stream_ops *window) |
int(* start_preview)(struct camera_device *) |
int(* start_recording)(struct camera_device *) |
Uruchom tryb nagrywania. Gdy obraz nagrania jest dostępny, wiadomość CAMERA_MSG_VIDEO_FRAME jest wysyłana z odpowiednią ramką. Każda ramka nagrywania musi zostać zwolniona przez klienta HAL kamery za pomocą releaseRecordingFrame(), zanim klient wywoła disableMsgType(CAMERA_MSG_VIDEO_FRAME). Po wywołaniu przez klienta disableMsgType(CAMERA_MSG_VIDEO_FRAME), zarządzanie cyklem życia klatek nagrywania wideo jest obowiązkiem warstwy HAL kamery, a klient nie może modyfikować ani uzyskiwać dostępu do żadnych klatek nagrywania wideo.
void(* stop_preview)(struct camera_device *) |
void(* stop_recording)(struct camera_device *) |
int(* store_meta_data_in_buffers)(struct camera_device *, int enable) |
Poproś kamerę HAL o przechowywanie metadanych lub rzeczywistych danych YUV w buforach wideo wysyłanych przez CAMERA_MSG_VIDEO_FRAME na sesję nagrywania. Jeśli nie zostanie wywołane, domyślnym zachowaniem kamery HAL jest przechowywanie prawdziwych danych YUV w buforach wideo.
Ta metoda powinna zostać wywołana przed startRecording(), aby była skuteczna.
Jeśli metadane są przechowywane w buforach wideo, od odbiorcy buforów wideo zależy zinterpretowanie zawartości i znalezienie rzeczywistych danych ramki za pomocą metadanych w buforze. Sposób, w jaki to się robi, wykracza poza zakres tej metody.
Niektóre warstwy HAL kamer mogą nie obsługiwać przechowywania metadanych w buforach wideo, ale wszystkie warstwy HAL kamer powinny obsługiwać przechowywanie prawdziwych danych YUV w buforach wideo. Jeśli kamera HAL nie obsługuje przechowywania metadanych w buforach wideo, gdy jest to wymagane, należy zwrócić INVALID_OPERATION. Bardzo przydatne jest, aby kamera HAL przekazywała metadane zamiast rzeczywistych danych klatki bezpośrednio do kodera wideo, ponieważ ilość nieskompresowanych danych klatki może być bardzo duża, jeśli rozmiar wideo jest duży.
- Parametry
włączać jeśli prawda, nakazuje kamerze HAL przechowywanie metadanych w buforach wideo; false nakazać kamerze HAL przechowywanie prawdziwych danych YUV w buforach wideo.
- Zwroty
- OK na sukces.
int(* take_picture)(struct camera_device *) |
Dokumentacja dla tej struktury została wygenerowana z następującego pliku:
- sprzęt/libhardware/include/hardware/ camera.h