[FFmpeg-devel] [PATCH] Add android_capture indev

Felix Matouschek felix at matouschek.org
Fri Nov 3 17:21:28 EET 2017


Am 02.11.2017 um 14:40 schrieb Nicolas George:
> When reading the subject of the mail, I first thought it would be about
> screen capture. Furthermore, there is code for audio, but it is not
> connected to anything, and it does not seem that the android API
> connects audio and video together.
> For all these reasons, I suggest you name this device maybe
> android_camera, and keep android_mic for audio capture.
Will do so.

> You are parsing the "filename" of the device into a key=value syntax.
> This is not a good idea, and I really would not like another key=value
> parser in the code base.
> How do cameraIds look? If the string values are friendly enough, they
> can be used as filenames as is.
I removed parsing of the "filename" and replaced it with a 
"camera_index" parameter.

I do not know how cameraIds are formed on different devices, seems like 
internal cameras
just use numbers but external devices may use a string. I do not have 
multiple devices to test
this. In my opionion an index for the list of all cameras should be 

> Can the error be translated into a human-readable message?
Will try to do that, I need to add the according strings for it somehow.

> Is it really the official way of getting the resolution and format of
> the video? If so, were the Android people drunk?
Seem like it.

>> +        if (format == IMAGE_FORMAT_ANDROID) {
> It would be better to support as many pixel formats as possible.
For now I settled on YUV420P, as the API doc states all devices must 
support it. I do not
have the resources to test every format.

>> +    side_data = av_packet_new_side_data(&pktl_next->pkt,
>> +            AV_PKT_DATA_DISPLAYMATRIX, sizeof(display_matrix));
> It would probably be best to avoid sending the side data repeatedly if
> it does not change.
Is it sufficient to append the matrix just once? I thought every 
AVPacket could have a different matrix.

>> +error:
>> +    pthread_mutex_unlock(&ctx->mutex);
>> +    AImage_delete(image);
>> +
>> +    return;
> It seems error conditions are not taken into account. Is it on purpose?
You mean for example ENOMEM if allocating fails and aborting the whole 
"session"? Could do that.

> Regards, 

I working on addressing all issues.


More information about the ffmpeg-devel mailing list