Ok, I think I have an answer for you. The startup function that works with the error is defined in a file called mediarecorder.cpp . Found here:
frameworks/av/media/libmedia/mediarecorder.cpp
This start function returns a variable of type status_t and corresponds to the error you see.
Now the status_t type status_t defined in a file called Errors.h , which can be found here:
system/core/include/utils/Errors.h
This defines an enumeration corresponding to status_t , as shown here:
enum { OK = 0, // Everything swell. NO_ERROR = 0, // No errors. UNKNOWN_ERROR = 0x80000000, NO_MEMORY = -ENOMEM, INVALID_OPERATION = -ENOSYS, BAD_VALUE = -EINVAL, BAD_TYPE = 0x80000001, NAME_NOT_FOUND = -ENOENT, PERMISSION_DENIED = -EPERM, NO_INIT = -ENODEV, ALREADY_EXISTS = -EEXIST, DEAD_OBJECT = -EPIPE, FAILED_TRANSACTION = 0x80000002, JPARKS_BROKE_IT = -EPIPE,
As you can see, some of the values here are taken from errno.h , so we just need to see which one is equal to 38.
According to this source , 38 complies with ENOSYS . So, if we look at the status_t enumeration, we will see that in android, ENOSYS corresponds to an invalid operation. Not very useful, but I hope this at least points you in the right direction.
vdelricco
source share