}
+int camera_v4l2_set_extra_preview_bitrate(void *camera_handle, int stream_id, int bitrate)
+{
+ hal_camera_handle *handle = (hal_camera_handle *)camera_handle;
+
+ if (!handle) {
+ LOGE("NULL handle");
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ if (stream_id < 0 || stream_id >= EXTRA_PREVIEW_STREAM_MAX) {
+ LOGE("invalid stream_id[%d]", stream_id);
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ LOGI("set bitrate[%d] for stream_id[%d]", bitrate, stream_id);
+
+ handle->extra_preview_format[stream_id].stream_bitrate = (uint32_t)bitrate;
+
+ return CAMERA_ERROR_NONE;
+}
+
+
+int camera_v4l2_get_extra_preview_bitrate(void *camera_handle, int stream_id, int *bitrate)
+{
+ hal_camera_handle *handle = (hal_camera_handle *)camera_handle;
+
+ if (!handle || !bitrate) {
+ LOGE("NULL param[%p,%p]", handle, bitrate);
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ if (stream_id < 0 || stream_id >= EXTRA_PREVIEW_STREAM_MAX) {
+ LOGE("invalid stream_id[%d]", stream_id);
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ *bitrate = (int)handle->extra_preview_format[stream_id].stream_bitrate;
+
+ LOGI("get bitrate[%d] for stream_id[%d]", *bitrate, stream_id);
+
+ return CAMERA_ERROR_NONE;
+}
+
+
static int __set_command(hal_camera_handle *handle, int64_t command, void *value)
{
int cid = 0;
funcs->release_extra_preview_buffer = camera_v4l2_release_extra_preview_buffer;
funcs->set_extra_preview_stream_format = camera_v4l2_set_extra_preview_stream_format;
funcs->get_extra_preview_stream_format = camera_v4l2_get_extra_preview_stream_format;
+ funcs->set_extra_preview_bitrate = camera_v4l2_set_extra_preview_bitrate;
+ funcs->get_extra_preview_bitrate = camera_v4l2_get_extra_preview_bitrate;
*data = (void *)funcs;