![]() |
|
| ROMs y desarrollo Meizu MX4 ROMs y desarrollo Meizu MX4 |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Cámara del MX4 y posibles mods.
Siguiendo tutos de iicc vamos a ver que se puede rascar de la cámara aunque tampoco es que tenga mucha idea.
Como el ya ha comentado hay varias opciones ocultas, sin activar o no se, pero estan aunque sean en parte. Así a grosso modo: HDR+ Tiny planet Balance de blancos Goofy effect (deformar la cara parece) Time lapse Identificadores del MX4 en los xml mz_m75_camera (front 2.2Mpx y back 20Mpx) Tamaño de la foto frontal sólo hay una entrada: <string-array name="mz_m75_camera_picture_front_entryvalues"> <item>1920x1152</item> Para la cámara trasera hay los siguientes: <string-array name="mz_m75_camera_picturesize_back_entryvalues"> <item>2624x1968</item> <item>4480x2688</item> <item>5248x3936</item> Del PRO son: mz_m76_camera (front 5Mpx y back 20Mpx) Para la cámara frontal hay tres entradas: <string-array name="mz_m76_camera_picture_front_entryvalues"> <item>1920x1080</item> <item>2048x1536</item> <item>2592x1944</item> Para la trasera es lo mismo que el MX4 Esto son fotografías, el caso es que se podrían añadir más resoluciones (más bajas) al MX4 para la cámara frontal o para la trasera. Exposición, posiblemente se puedan modificar: <string-array name="mz_m75_shutter_speed_filter_values"> <item>0</item> <item>1000</item> <item>100000</item> <item>1000000</item> <item>20000000</item> El caso es que para el PRO no hay esta entrada y supongo que usa los mismos valores, además en sensibilidad ISO ninguna de las anteriores tiene entradas pero otro modelo de cámara si que coninciden con estos que son valores compartidos con el M1 (tiene 13Mpx y 5Mpx): <string-array name="mz_m71c_iso_entry"> <item>@string/auto</item> <item>HJR</item> <item>100</item> <item>200</item> <item>400</item> <item>800</item> <item>1600</item> También está la entrada anteriormente de la cuenta atrás pero no voy a rellenar más al respecto, después de lo que parece que comparten el M1 y MX4 en sus dos versiones aparecen las entradas del MX3 y MX2 que tampoco voy a comentar. Los tres tamaños seleccionables de tamaño de foto coincide con estos valores: <string-array name="pref_camera_picturesize_nicks"> <item>@string/pref_camera_picturesize_small</item> <item>@string/pref_camera_picturesize_middle</item> <item>@string/pref_camera_picturesize_big</item> A todo esto, algunos os preguntareis para qué saco todo esto y es que pretendo, al menos para pasar el rato, añadir o modificar opciones de la cámara y este tutorial me puede ayudar http://www.darksideteam.com/threads/...a-aplicaciones En la parte de video aparecen estas configuraciones, son las entradas a mirar de tamaño de video y después los perfiles de calidad (24 sería el alto??) <string-array name="pref_video_quality_entries"> <item>@string/pref_video_quality_entry_low</item> <item>@string/pref_video_quality_entry_high</item> <item>@string/pref_video_quality_entry_qcif</item> <item>@string/pref_video_quality_entry_480p</item> <item>@string/pref_video_quality_entry_720p</item> <item>@string/pref_video_quality_entry_1080p</item> <item>@string/pref_video_quality_entry_4k</item> <item>@string/pref_video_quality_entry_480p</item> <item>@string/pref_video_quality_entry_480p</item> </string-array> <string-array name="pref_video_quality_entryvalues"> <item>0</item> <item>1</item> <item>2</item> <item>4</item> <item>5</item> <item>6</item> <item>23</item> <item>24</item> <item>10</item> Esto todo está dentro del RES en varios XML, esto en concreto está en arrays.xml y hay que ir viendo a donde apunta en el resto para posibles modificaciones. Sigo investigando el tema a ver si saco algo y animo al que quiera a que me arroje luz o colabore a ver si entre varios empezamos a hacer algo que creamos de interés, como tener otras opciones de resolución o calidad. Última edición por kkdlux Día 01/05/15 a las 20:51:05 |
|
|
|
#2
|
||||
|
||||
|
En Strings.xml por ejemplo aparece esto:
<string name="mz_m71_video_quality_back_default">24</string> <string name="mz_m71_video_quality_front_default">24</string> <string name="mz_m75_camera_picture_size_back_default">524 8x3936</string> <string name="mz_m75_camera_picture_size_front_default">19 20x1152</string> <string name="mz_m75_video_quality_back_default">5</string> <string name="mz_m75_video_quality_front_default">5</string> <string name="mz_m76_camera_picture_size_back_default">448 0x2688</string> <string name="mz_m76_camera_picture_size_front_default">25 92x1944</string> Tal vez coincide que el M1 tiene una calidad por defecto para las fotos (24) y el MX4 (5) además por alguna razón el PRO parece que de entrada no saca las fotos en 20Mpx y viene entiendo que por defecto a unos 16Mpx. En el Pro no aparece nada de la calidad de video quizás porque este si que tiene el media_profiles.xml. |
|
#3
|
||||
|
||||
|
Cosas que se supone que estan preparadas para el modo manual y que no aparecen:
![]() En concreto un necesario Balance de blancos (wb) y después hay saturación o contraste. |
|
#4
|
|
Buena iniciativa!
Yo por lo que veo, la función Tinyplanet está bastante desarrollada, pero eso sí, lleva más de un mes sin tocarse. Aquí un fragmento de un smali [php].method public constructor <init>()V .locals 2 .prologue const/4 v1, 0x0 .line 60 invoke-direct {p0}, Landroid/app/DialogFragment;-><init>()V .line 82 iput v1, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mPreviewSizePx:I .line 83 const/high16 v0, 0x3f000000 # 0.5f iput v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mCurrentZoom:F .line 84 const/4 v0, 0x0 iput v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mCurrentAngle:F .line 91 new-instance v0, Ljava/util/concurrent/locks/ReentrantLock; invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantLock;-><init>()V iput-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mResultLock:Ljava/util/concurrent/locks/Lock; .line 94 const-string v0, "" iput-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mOriginalTitle:Ljava/lang/String; .line 102 new-instance v0, Landroid/os/Handler; invoke-direct {v0}, Landroid/os/Handler;-><init>()V iput-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mHandler:Landroid/os/Handler; .line 104 invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; move-result-object v0 iput-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mRendering:Ljava/lang/Boolean; .line 110 invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; move-result-object v0 iput-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mRenderOneMore:Ljava/lang/Boolean; .line 127 new-instance v0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment$1; invoke-direct {v0, p0}, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment$1;-><init>(Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;)V iput-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mCreateTinyPlanetRunnable:Ljava/lang/Runnable; return-void .end method .method static synthetic access$000(Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;)Ljava/lang/Boolean; .locals 1 .param p0, "x0" # Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment; .prologue .line 60 iget-object v0, p0, Lcom/meizu/media/camera/tinyplanet/TinyPlanetFragment;->mRendering:Ljava/lang/Boolean; return-object v0[/php] icono: ic_menu_tiny_planet.png Última edición por iicc Día 01/05/15 a las 21:29:35 |
|
#5
|
||||
|
||||
|
En mz_setting_preferences.xml entiendo yo que es donde hay que añadir o modificar lo que corresponda.
Contiene esto: <?xml version="1.0" encoding="utf-8"?> <PreferenceGroup camera:title= @string/pref_camera_settings_category" xmlns:camera="http://schemas.android.com/apk/res/com.meizu.media.camera"> <ListPreference camera:key="mz_pref_meter_separate_key" camera:defaultValue= @string/setting_on_value" camera:entryValues= @array/mz_meter_separate_entryvalues" /> <ListPreference camera:key="mz_pref_gps_key" camera:defaultValue= @string/setting_on_value" camera:entryValues= @array/mz_gps_entryvalues" /> <ListPreference camera:key="mz_pref_hdr_key" camera:defaultValue= @string/setting_off_value" camera:entryValues= @array/mz_hdr_entryvalues" /> <ListPreference camera:key="mz_pref_meshline_key" camera:defaultValue= @string/setting_off_value" camera:entryValues= @array/mz_meshline_entryvalues" /> <ListPreference camera:key="mz_pref_level_key" camera:defaultValue= @string/setting_off_value" camera:entryValues= @array/mz_level_entryvalues" /> <ListPreference camera:key="mz_pref_storage_key" camera:defaultValue= @string/setting_storage_value" camera:entryValues= @array/mz_storage_entryvalues" /> <ListPreference camera:key="pref_camera_timer_key" camera:defaultValue="0" camera:entryValues= @array/mz_countdown_entryvalues" /> <MzPictureSizePreference camera:key="pref_camera_picturesize_key" camera:entryValues= @array/pref_camera_picturesize_entryvalues" camera:entries= @array/pref_camera_picturesize_entries" camera:nicks= @array/pref_camera_picturesize_nicks" camera:mx2frontValues= @array/mz_mx2_camera_picture_front_entryvalues" camera:mx3frontValues= @array/mz_mx3_camera_picture_front_entryvalues" camera:m75frontValues= @array/mz_m75_camera_picture_front_entryvalues" camera:m76frontValues= @array/mz_m76_camera_picture_front_entryvalues" camera:m71frontValues= @array/mz_m71_camera_picture_front_entryvalues" camera:m79frontValues= @array/mz_m79_camera_picture_front_entryvalues" camera:mx2entryValues= @array/mz_mx2_camera_picturesize_back_entryvalues" camera:mx3entryValues= @array/mz_mx3_camera_picturesize_back_entryvalues" camera:m75entryValues= @array/mz_m75_camera_picturesize_back_entryvalues" camera:m76entryValues= @array/mz_m76_camera_picturesize_back_entryvalues" camera:m71entryValues= @array/mz_m71_camera_picturesize_back_entryvalues" camera:m79entryValues= @array/mz_m79_camera_picturesize_back_entryvalues" /> <MzVideoSizePreference camera:key="pref_video_quality_key" camera:entryValues= @array/pref_video_quality_entryvalues" camera:entries= @array/pref_video_quality_entries" /> </PreferenceGroup> Ahora vamos por ejemplo a donde pone gps: <ListPreference camera:key="mz_pref_gps_key" camera:defaultValue= @string/setting_on_value" camera:entryValues= @array/mz_gps_entryvalues" /> @string sería strings.xml y @array sería array.xml, esto está en res/values En strings no aparece nada especial, simplemente esa linea apunta a un texto que pone "on" Que en array.xml apunta a estos valores: <string-array name="mz_gps_entryvalues"> <item @string/setting_on_value</item> <item @string/setting_off_value</item> </string-array> Si nos fijamos todo correspondo con los valores por defecto y ya pone lo que está on y off al arrancar la cámara y es lo que aparece en settings de la cámara. De momento no saco mucho en claro ya que me tomo este hilo como bloc de apuntes... |
| Gracias de parte de: | ||
|
#6
|
||||
|
||||
|
No entiendo nada pero si nos sacais la apk con todas esas funciones os ponemos un piso en la castellana!
|
| Los siguientes 4 usuarios han agradecido a negriton su comentario: | ||
|
#7
|
||||
|
||||
|
Yo no prometo nada, aunque pensando que tiene un pefil de Nexus 5 creo que en realidad es la cámara stock de android modificada, es decir, la del Nexus 5 que si trae el photoshphere pero aquí está desactivado y añadidos los perfiles de Meizu entre otras cosas.
Habría que mirar eso también. |
|
#8
|
||||
|
||||
|
Unos pequeños avances, he usado smali2java para poder al menos leer de una manera comprensible los smali con una conversión a JAVA, ojo, no soy programador y no tengo idea.
MzCamcorderProfileManager.smali Ha pasado a: MzCamcorderProfileManager.java Y nos encontramos con este código: Cita:
Al principio hay lo que se supone varios perfiles de video que son los siguientes: public class MzCamcorderProfileManager { public static final int QUALITY_4K = 0x17; public static int QUALITY_SLOW_MOTION; public static int QUALITY_VGA; Esto es útil para después. El perfirl general parace que es el 71C: if(ApiHelper.DEVICE_IS_M71C) { QUALITY_VGA = 0xa; QUALITY_SLOW_MOTION = 0xa; return; } QUALITY_VGA = 0x18; QUALITY_SLOW_MOTION = 0x15; Aquí aparecen los datos de video, 4k sería la entrada 0x17 Otra cosa que he encontrado: public MzCamcorderProfile(MzCamcorderProfileManager p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10, int p11, int p12, int p13) { duration = p2; quality = p3; fileFormat = p4; videoCodec = p5; videoBitRate = p6; videoFrameRate = p7; videoWidth = p8; videoHeight = p9; audioCodec = p10; audioBitRate = p11; audioSampleRate = p12; audioChannels = p13; Esto dicta la posición de cada elemento en esto, que cogeremos de aquí que coincide con 0X17: if(p2 == 0x17) { mMzProfile = new MzCamcorderProfileManager.MzCamcorderProfile(this, 0x3c, p2, 0x2, 0x2, 0x2255100, 0x1e, 0xf00, 0x870, 0x3, 0x17700, 0x3e80, 0x1); Con lo que yo entiendo (si no me equivoco) que 4k es duration = 0x3c, ; 60 quality = p3; fileFormat = 0x2, ; 2 videoCodec = 0x2, ; 2 videoBitRate = 0x2255100, ; 36000000 videoFrameRate = 0x1e, ; 30 videoWidth = 0xf00, ; 3840 videoHeight = 0x870, ; 2160 audioCodec = 0x3, ; 3 audioBitRate = 0x17700, ; 96000 audioSampleRate = 0x3e80; 16000 audioChannels = 0x1; 1 Y slow motion duration = 0x3c; 60 quality = p3; fileFormat = 0x2; 2 videoCodec = 0x2; 2 videoBitRate = 0x112a880, ; 18000000 videoFrameRate = 0x64, ; 100 videoWidth = 0x500, ; 1280 videoHeight = 0x2d0, ; 720 audioCodec = -0x1; audioBitRate = -0x1; audioSampleRate = -0x1; audioChannels = -0x1; De aquí saco estas conclusiones: Video codec 0x2 es el HEVC que coincide que es el formato (h265) de 4k y slow motion, también muy interesante los valores de audio en slowmotion, si nos fijamos son todos -0x1, que viene a se lo mismo que no hay, es decir, teoricamente podemos rellenar eso con por ejemplo los datos de 4k y tendríamos audio en slowmotion?? He puesto a continuación los valores en decimal y vemos que coincide perfectamente la resolución y FPS, el bitrate y también los valores de audio. Lo dicho antes, y si cambiamos esos valores sabiendo lo que sabemos de las capacidades del chipset? por ejemplo un slowmotion a 120fps para empezar y con audio? quizás con más calidad? La cuestión es ahora mirar si se puede modificar sin volverse uno loco directamente en el smali porque si ya me pierdo un poco aquí lo otro es una auténtica locura y además no tengo claro si esto sólo funcionaría para el PRO. |
|
#9
|
||||
|
||||
|
Dejo el Smali aquí pegado por si iicc tiene ganas de recompilarlo a ver que hace, aunque por lo que he visto eso es configuración para el pro.
He puesto 120fps y los datos de audio de la otra configuración para experimentar. Código:
.class public Lcom/meizu/media/camera/MzCamcorderProfileManager;
.super Ljava/lang/Object;
.source "MzCamcorderProfileManager.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
}
.end annotation
# static fields
.field public static final QUALITY_4K:I = 0x17
.field public static QUALITY_SLOW_MOTION:I
.field public static QUALITY_VGA:I
# instance fields
.field private mIsUseMzProfile:Z
.field private mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
.field private mProfile:Landroid/media/CamcorderProfile;
# direct methods
.method static constructor <clinit>()V
.locals 2
.prologue
const/16 v1, 0xa
.line 16
sget-boolean v0, Lcom/meizu/media/camera/util/ApiHelper;->DEVICE_IS_M71C:Z
if-eqz v0, :cond_0
.line 17
sput v1, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_VGA:I
.line 18
sput v1, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_SLOW_MOTION:I
.line 23
:goto_0
return-void
.line 20
:cond_0
const/16 v0, 0x18
sput v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_VGA:I
.line 21
const/16 v0, 0x15
sput v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_SLOW_MOTION:I
goto :goto_0
.end method
.method public constructor <init>()V
.locals 0
.prologue
.line 9
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 155
return-void
.end method
.method public static hasProfile(II)Z
.locals 1
.param p0, "cameraId" # I
.param p1, "quality" # I
.prologue
.line 189
sget-boolean v0, Lcom/meizu/media/camera/util/ApiHelper;->DEVICE_IS_M76:Z
if-eqz v0, :cond_0
if-nez p0, :cond_0
.line 190
const/16 v0, 0x17
if-ne p1, v0, :cond_0
.line 191
const/4 v0, 0x1
.line 193
:goto_0
return v0
:cond_0
invoke-static {p0, p1}, Landroid/media/CamcorderProfile;->hasProfile(II)Z
move-result v0
goto :goto_0
.end method
# virtual methods
.method public getAudioBitRate()I
.locals 1
.prologue
.line 120
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 121
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioBitRate:I
.line 123
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->audioBitRate:I
goto :goto_0
.end method
.method public getAudioChannels()I
.locals 1
.prologue
.line 134
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 135
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioChannels:I
.line 137
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->audioSampleRate:I
goto :goto_0
.end method
.method public getAudioCodec()I
.locals 1
.prologue
.line 113
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 114
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioCodec:I
.line 116
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->audioCodec:I
goto :goto_0
.end method
.method public getAudioSampleRate()I
.locals 1
.prologue
.line 127
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 128
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioSampleRate:I
.line 130
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->audioSampleRate:I
goto :goto_0
.end method
.method public getCamcorderProfile()Landroid/media/CamcorderProfile;
.locals 1
.prologue
.line 53
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
return-object v0
.end method
.method public getFileFormat()I
.locals 1
.prologue
.line 78
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 79
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->fileFormat:I
.line 81
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->fileFormat:I
goto :goto_0
.end method
.method public getVideoBitRate()I
.locals 1
.prologue
.line 85
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 86
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoBitRate:I
.line 88
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->videoBitRate:I
goto :goto_0
.end method
.method public getVideoDuration()I
.locals 1
.prologue
.line 99
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 100
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->duration:I
.line 102
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->duration:I
goto :goto_0
.end method
.method public getVideoEncoder()I
.locals 1
.prologue
.line 92
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 93
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoCodec:I
.line 95
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->videoCodec:I
goto :goto_0
.end method
.method public getVideoFrameHeight()I
.locals 1
.prologue
.line 64
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 65
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoHeight:I
.line 67
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->videoFrameHeight:I
goto :goto_0
.end method
.method public getVideoFrameRate()I
.locals 1
.prologue
.line 71
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 72
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoFrameRate:I
.line 74
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->videoFrameRate:I
goto :goto_0
.end method
.method public getVideoFrameWidth()I
.locals 1
.prologue
.line 57
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 58
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoWidth:I
.line 60
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->videoFrameWidth:I
goto :goto_0
.end method
.method public getVideoQuality()I
.locals 1
.prologue
.line 106
iget-boolean v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
if-eqz v0, :cond_0
.line 107
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->quality:I
.line 109
:goto_0
return v0
:cond_0
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
iget v0, v0, Landroid/media/CamcorderProfile;->quality:I
goto :goto_0
.end method
.method public initCamcorderProfile(II)V
.locals 16
.param p1, "cameraId" # I
.param p2, "quality" # I
.prologue
.line 31
const/4 v1, 0x0
:try_start_0
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
.line 32
invoke-static/range {p1 .. p2}, Landroid/media/CamcorderProfile;->get(II)Landroid/media/CamcorderProfile;
move-result-object v1
move-object/from16 v0, p0
iput-object v1, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mProfile:Landroid/media/CamcorderProfile;
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
.line 50
:cond_0
:goto_0
return-void
.line 33
:catch_0
move-exception v15
.line 34
.local v15, "e":Ljava/lang/Exception;
sget-boolean v1, Lcom/meizu/media/camera/util/ApiHelper;->DEVICE_IS_M76:Z
if-eqz v1, :cond_0
.line 35
const/4 v1, 0x1
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
.line 36
const/16 v1, 0x17
move/from16 v0, p2
if-ne v0, v1, :cond_1
.line 37
new-instance v1, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
const/16 v3, 0x3c
const/4 v5, 0x2
const/4 v6, 0x2
const v7, 0x2255100
const/16 v8, 0x1e
const/16 v9, 0xf00
const/16 v10, 0x870
const/4 v11, 0x3
const v12, 0x17700
const/16 v13, 0x3e80
const/4 v14, 0x1
move-object/from16 v2, p0
move/from16 v4, p2
invoke-direct/range {v1 .. v14}, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;-><init>(Lcom/meizu/media/camera/MzCamcorderProfileManager;IIIIIIIIIIII)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
goto :goto_0
.line 41
:cond_1
sget v1, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_SLOW_MOTION:I
move/from16 v0, p2
if-ne v0, v1, :cond_2
.line 42
new-instance v1, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
const/16 v3, 0x3c
const/4 v5, 0x2
const/4 v6, 0x2
const v7, 0x112a880
const/16 v8, 0x78
const/16 v9, 0x500
const/16 v10, 0x2d0
const/4 v11, 0x3
const/4 v12, 0x17700
const/4 v13, 0x3e80
const/4 v14, 0x1
move-object/from16 v2, p0
move/from16 v4, p2
invoke-direct/range {v1 .. v14}, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;-><init>(Lcom/meizu/media/camera/MzCamcorderProfileManager;IIIIIIIIIIII)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
goto :goto_0
.line 46
:cond_2
const/4 v1, 0x0
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mIsUseMzProfile:Z
goto :goto_0
.end method
.method public setProfile(Landroid/media/MediaRecorder;)V
.locals 2
.param p1, "recorder" # Landroid/media/MediaRecorder;
.prologue
.line 141
if-eqz p1, :cond_0
.line 142
const/4 v0, 0x5
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setAudioSource(I)V
.line 143
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->fileFormat:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setOutputFormat(I)V
.line 144
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoFrameRate:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setVideoFrameRate(I)V
.line 145
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoWidth:I
iget-object v1, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v1, v1, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoHeight:I
invoke-virtual {p1, v0, v1}, Landroid/media/MediaRecorder;->setVideoSize(II)V
.line 146
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoBitRate:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setVideoEncodingBitRate(I)V
.line 147
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->videoCodec:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setVideoEncoder(I)V
.line 148
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioBitRate:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setAudioEncodingBitRate(I)V
.line 149
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioChannels:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setAudioChannels(I)V
.line 150
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioSampleRate:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setAudioSamplingRate(I)V
.line 151
iget-object v0, p0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->mMzProfile:Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;
iget v0, v0, Lcom/meizu/media/camera/MzCamcorderProfileManager$MzCamcorderProfile;->audioCodec:I
invoke-virtual {p1, v0}, Landroid/media/MediaRecorder;->setAudioEncoder(I)V
.line 153
:cond_0
return-void
.end method
En smali/com/meizu/media/camera Última edición por kkdlux Día 02/05/15 a las 22:57:01 |
|
#10
|
|
Justo lo acababa de hacer jaja
Está compilado, ahora lo subo |
|
#11
|
|
Aquí está, solo puse lo de los 120 fps: https://drive.google.com/file/d/0B1W...ew?usp=sharing
Ahora la pruebo |
|
#13
|
|
mmm con el cambio del audio en cámara lenta da error al compilar...
|
|
#14
|
|
Voy a probar más configuraciones, con el audio da este error:
Código:
I: Using Apktool 2.0.0-RC4 I: Checking whether sources has changed... I: Smaling smali folder into classes.dex... Camera\smali\com\meizu\media\camera\MzCamcorderProfileManager.smali[552,4] 96000 cannot fit into a short Camera\smali\com\meizu\media\camera\MzCamcorderProfileManager.smali[554,4] misma tched tree node: I_STATEMENT_FORMAT11n expecting I_CATCHES Camera\smali\com\meizu\media\camera\MzCamcorderProfileManager.smali[556,4] misma tched tree node: I_STATEMENT_FORMAT11n expecting <UP> Exception in thread "main" brut.androlib.AndrolibException: Could not smali file : com/meizu/media/camera/MzCamcorderProfileManager.smali |
|
#15
|
|
Más cosas interesantes del modo manual
[php] public class ManualMode extends CameraMode implements MzManualUI.ManualUIListener { public static String MANUAL_CONTRAST_KEY = null; public static String MANUAL_EXPOSURE_KEY = null; public static String MANUAL_FOCUS_KEY = null; public static final int MANUAL_FOCUS_MAX = 0x3ff; public static String MANUAL_ISO_KEY; public static String MANUAL_SATURATION_KEY; public static String MANUAL_SHUTTER_SPEED_KEY; public static String MANUAL_WB_KEY; private static HashMap SHTTER_SPEED_FORMAT; private static long SHUTTER_SPEED_TOO_LONG; private MzCamParamsManager mCamParamsManager; private Context mCtx; private HashMap mDataManager; private MzManualUI mManualUI; private boolean mUserFocusMode = true; static { SHUTTER_SPEED_TOO_LONG = 0x7d0; MANUAL_SHUTTER_SPEED_KEY = "shutter-value-supported"; MANUAL_ISO_KEY = "iso-speed-values"; MANUAL_EXPOSURE_KEY = "exposure"; MANUAL_FOCUS_KEY = "mf-pos"; MANUAL_CONTRAST_KEY = "contrast-values"; MANUAL_SATURATION_KEY = "saturation-values"; MANUAL_WB_KEY = "whitebalance-values"; if((ApiHelper.DEVICE_IS_MX2) || (ApiHelper.DEVICE_IS_MX3) || (ApiHelper.DEVICE_IS_M71C)) { MANUAL_SHUTTER_SPEED_KEY = "shutter-speed-supported"; MANUAL_ISO_KEY = "iso-values"; } } private boolean mReleased = false; public ManualMode(CameraActivity p1, MzCamParamsManager p2, MzUIController p3, CameraModeListener p4) { super(p1, p2, p3, p4); mCtx = p1.getApplicationContext(); mCamParamsManager = p2; mReleased = false; if(SHTTER_SPEED_FORMAT == null) { SHTTER_SPEED_FORMAT = new HashMap(); if(ApiHelper.DEVICE_IS_MX3) { SHTTER_SPEED_FORMAT.put("125", "1/8s"); SHTTER_SPEED_FORMAT.put("250", "1/4s"); SHTTER_SPEED_FORMAT.put("500", "1/2s"); SHTTER_SPEED_FORMAT.put("1000", "1s"); SHTTER_SPEED_FORMAT.put("1500", "1.5s"); } else { SHTTER_SPEED_FORMAT.put("125", "1/8000s"); SHTTER_SPEED_FORMAT.put("200", "1/5000s"); SHTTER_SPEED_FORMAT.put("250", "1/4000s"); SHTTER_SPEED_FORMAT.put("500", "1/2000s"); SHTTER_SPEED_FORMAT.put("1000", "1/1000s"); SHTTER_SPEED_FORMAT.put("2000", "1/500s"); SHTTER_SPEED_FORMAT.put("5000", "1/200s"); SHTTER_SPEED_FORMAT.put("10000", "1/100s"); SHTTER_SPEED_FORMAT.put("20000", "1/50s"); SHTTER_SPEED_FORMAT.put("50000", "1/20s"); SHTTER_SPEED_FORMAT.put("100000", "1/10s"); SHTTER_SPEED_FORMAT.put("200000", "1/5s"); } public void setManualValue(String p1) { if(MANUAL_SHUTTER_SPEED_KEY.equals(p1)) { handleSMBbySpeed(); savePreferences("mz_pref_shutterspeed_key", MANUAL_SHUTTER_SPEED_KEY); } else if(MANUAL_ISO_KEY.equals(p1)) { savePreferences("mz_pref_iso_key", MANUAL_ISO_KEY); } else if(MANUAL_EXPOSURE_KEY.equals(p1)) { savePreferences("pref_camera_exposure_key", MANUAL_EXPOSURE_KEY); } else if(MANUAL_FOCUS_KEY.equals(p1)) { savePreferences("mz_pref_manualfocus", MANUAL_FOCUS_KEY); mUserFocusMode = true; setManualFocus((ManualMode.ManualData)mDataManager .get(p1).getCurrentValue()); } else if(MANUAL_WB_KEY.equals(p1)) { savePreferences("pref_camera_whitebalance_key", MANUAL_WB_KEY); } else if(MANUAL_SATURATION_KEY.equals(p1)) { savePreferences("mz_pref_saturation", MANUAL_SATURATION_KEY); } else if(MANUAL_CONTRAST_KEY.equals(p1)) { savePreferences("mz_pref_contrast", MANUAL_CONTRAST_KEY); } getParamsMgr().setCameraParameters(0x4); }[/php]Curioso esto que dice si el móvil es de china mobile, tiene las funciones de balance de blancos, saturación.... [php]if(ApiHelper.DEVICE_IS_MEIZU) { ManualMode.ManualData "exposure" = new ManualMode.ManualData(this, MANUAL_EXPOSURE_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("exposure") != null) { mDataManager.put(MANUAL_EXPOSURE_KEY, "exposure"); } ManualMode.ManualData "mfocus" = new ManualMode.ManualData(this, MANUAL_FOCUS_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("mfocus") != null) { mDataManager.put(MANUAL_FOCUS_KEY, "mfocus"); } ManualMode.ManualData "iso" = new ManualMode.ManualData(this, MANUAL_ISO_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("iso") != null) { mDataManager.put(MANUAL_ISO_KEY, "iso"); } ManualMode.ManualData "shutterspeed" = new ManualMode.ManualData(this, MANUAL_SHUTTER_SPEED_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("shutterspeed" ) != null) { mDataManager.put(MANUAL_SHUTTER_SPEED_KEY, "shutterspeed"); } if(ApiHelper.DEVICE_IS_CHINA_MOBILE) { ManualMode.ManualData "wb" = new ManualMode.ManualData(this, MANUAL_WB_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("wb") != null) { mDataManager.put(MANUAL_WB_KEY, "wb"); } ManualMode.ManualData "saturation" = new ManualMode.ManualData(this, MANUAL_SATURATION_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("saturation") != null) { mDataManager.put(MANUAL_SATURATION_KEY, "saturation"); } ManualMode.ManualData "contrast" = new ManualMode.ManualData(this, MANUAL_CONTRAST_KEY, getParamsMgr().getParams(), p1); if(ManualMode.ManualData.access$300("contrast") != null) { mDataManager.put(MANUAL_CONTRAST_KEY, "contrast"); } } return;[/php]Un apunte: M75 ---> MX4 M76 -->MX4 PRO M71 -->M1 Note M71C -->M71C M79 -->M1 Mini He puesto que grabe la cámara a 100 fps y a 1080p pero sigue grabando igual.. habrá que probar con un mx4 pro De todas formas esto está bastante complicado de modificar la verdad.. Última edición por iicc Día 03/05/15 a las 02:51:28 |
|
#16
|
||||
|
||||
|
Yo seguire buscando a ver si aparece en otro smali la configuración del MX4, con tantos es un lío.
A ver si alguien con una rom U nos puede decir si hay más opciones de cámara, que supongo que es lo de china mobile. Se supone que si cambiamos: ApiHelper.DEVICE_IS_CHINA_MOBILE Por ApiHelper.DEVICE_IS_MEIZU Activa el resto, lo he mirado por encima de todas maneras. |
|
#17
|
|
|
Cita:
De todas formas ya lo probé y da error al compilar |
|
#18
|
||||
|
||||
|
Creo que el tema video por el momento lo voy a dejar porque mirando en mediatek.labs hablan de los perfiles creados en las apis y al parecer en la 21 que corresponde a lollipop tienen en el lenguaje resoluciones y fps más altos, aunque se ve que han introducido el 4k de alguna manera.
He visto alguna entrada que habla sólo de la altura del video y ponen un límite de 720p para slowmotion, a ver si con lollipop realmente se puede hacer algo aunque por lo visto en el pro poco han cambiado. |
|
#19
|
|
He estado probando la cámara en el pro, y a 100fps a 1080p, graba a 1080p pero no en slowmotion.
Y probé a meterle 200fps a 480p y crashea el móvil entero, justo cuando le doy a grabar peta. Esto en Lollipop |
|
|
|
#20
|
||||
|
||||
|
Y tocando el media-profiles del pro?
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 09:29:48 (GMT +1)
HTCMania: líderes desde el 2007







