PDA

Ver la Versión Completa : Debate Cámara del MX4 y posibles mods.


kkdlux
01/05/15, 20:18:54
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/82-A%C3%B1adir-opciones-a-Settings-%28accesos%29-Nuevas-opciones-acceso-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.

kkdlux
01/05/15, 20:44:16
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">5248x3936</string>
<string name="mz_m75_camera_picture_size_front_default">1920x1152</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">4480x2688</string>
<string name="mz_m76_camera_picture_size_front_default">2592x1944</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.

kkdlux
01/05/15, 21:06:42
Cosas que se supone que estan preparadas para el modo manual y que no aparecen:

http://i.imgur.com/ai8VepU.jpg

En concreto un necesario Balance de blancos (wb) y después hay saturación o contraste.

iicc
01/05/15, 21:21:08
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

.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


icono: 711346

kkdlux
01/05/15, 22:05:33
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...

negriton
02/05/15, 01:53:28
No entiendo nada pero si nos sacais la apk con todas esas funciones os ponemos un piso en la castellana!

kkdlux
02/05/15, 20:48:40
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.

kkdlux
02/05/15, 22:20:29
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:
/**
* Generated by smali2java 1.0.0.558
* Copyright (C) 2013 Hensence.com
*/

package com.meizu.media.camera;

import android.media.CamcorderProfile;
import com.meizu.media.camera.util.ApiHelper;
import android.media.MediaRecorder;

public class MzCamcorderProfileManager {
public static final int QUALITY_4K = 0x17;
public static int QUALITY_SLOW_MOTION;
public static int QUALITY_VGA;
private boolean mIsUseMzProfile;
private MzCamcorderProfileManager.MzCamcorderProfile mMzProfile;
private CamcorderProfile mProfile;

public MzCamcorderProfileManager() {
}

static {
if(ApiHelper.DEVICE_IS_M71C) {
QUALITY_VGA = 0xa;
QUALITY_SLOW_MOTION = 0xa;
return;
}
QUALITY_VGA = 0x18;
QUALITY_SLOW_MOTION = 0x15;
}

public void initCamcorderProfile(int p1, int p2) {
try {
mIsUseMzProfile = false;
mProfile = CamcorderProfile.get(p1, p2);
return;
} catch(Exception "e") {
if(ApiHelper.DEVICE_IS_M76) {
mIsUseMzProfile = true;
if(p2 == 0x17) {
mMzProfile = new MzCamcorderProfileManager.MzCamcorderProfile(this, 0x3c, p2, 0x2, 0x2, 0x2255100, 0x1e, 0xf00, 0x870, 0x3, 0x17700, 0x3e80, 0x1);
return;
}
if(p2 == QUALITY_SLOW_MOTION) {
mMzProfile = new MzCamcorderProfileManager.MzCamcorderProfile(this, 0x3c, p2, 0x2, 0x2, 0x112a880, 0x64, 0x500, 0x2d0, -0x1, -0x1, -0x1, -0x1);
return;
}
mIsUseMzProfile = false;
}
}
}

public CamcorderProfile getCamcorderProfile() {
return mProfile;
}

public int getVideoFrameWidth() {
if(mIsUseMzProfile) {
return mMzProfile.videoWidth;
}
return mProfile.videoFrameWidth;
}

public int getVideoFrameHeight() {
if(mIsUseMzProfile) {
return mMzProfile.videoHeight;
}
return mProfile.videoFrameHeight;
}

public int getVideoFrameRate() {
if(mIsUseMzProfile) {
return mMzProfile.videoFrameRate;
}
return mProfile.videoFrameRate;
}

public int getFileFormat() {
if(mIsUseMzProfile) {
return mMzProfile.fileFormat;
}
return mProfile.fileFormat;
}

public int getVideoBitRate() {
if(mIsUseMzProfile) {
return mMzProfile.videoBitRate;
}
return mProfile.videoBitRate;
}

public int getVideoEncoder() {
if(mIsUseMzProfile) {
return mMzProfile.videoCodec;
}
return mProfile.videoCodec;
}

public int getVideoDuration() {
if(mIsUseMzProfile) {
return mMzProfile.duration;
}
return mProfile.duration;
}

public int getVideoQuality() {
if(mIsUseMzProfile) {
return mMzProfile.quality;
}
return mProfile.quality;
}

public int getAudioCodec() {
if(mIsUseMzProfile) {
return mMzProfile.audioCodec;
}
return mProfile.audioCodec;
}

public int getAudioBitRate() {
if(mIsUseMzProfile) {
return mMzProfile.audioBitRate;
}
return mProfile.audioBitRate;
}

public int getAudioSampleRate() {
if(mIsUseMzProfile) {
return mMzProfile.audioSampleRate;
}
return mProfile.audioSampleRate;
}

public int getAudioChannels() {
if(mIsUseMzProfile) {
return mMzProfile.audioChannels;
}
return mProfile.audioSampleRate;
}

public void setProfile(MediaRecorder p1) {
if(p1 != null) {
p1.setAudioSource(0x5);
p1.setOutputFormat(mMzProfile.fileFormat);
p1.setVideoFrameRate(mMzProfile.videoFrameRate);
p1.setVideoSize(mMzProfile.videoWidth, mMzProfile.videoHeight);
p1.setVideoEncodingBitRate(mMzProfile.videoBitRate );
p1.setVideoEncoder(mMzProfile.videoCodec);
p1.setAudioEncodingBitRate(mMzProfile.audioBitRate );
p1.setAudioChannels(mMzProfile.audioChannels);
p1.setAudioSamplingRate(mMzProfile.audioSampleRate );
p1.setAudioEncoder(mMzProfile.audioCodec);
}
}

class MzCamcorderProfile {
public int audioBitRate;
public int audioChannels;
public int audioCodec;
public int audioSampleRate;
public int duration;
public int fileFormat;
public int quality;
public int videoBitRate;
public int videoCodec;
public int videoFrameRate;
public int videoHeight;
public int videoWidth;

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;
}
}

public static boolean hasProfile(int p1, int p2) {
if((ApiHelper.DEVICE_IS_M76) && (p1 == 0)) {
if(p2 == 0x17) {
return true;
}
}
return CamcorderProfile.hasProfile(p1, p2);
}
}


Dentro de esto vemos que hay un perfil del pro (cámara 76) que voy a ignorar.

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.

kkdlux
02/05/15, 22:54:31
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.

.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


MzCamcorderProfileManager.smali

En smali/com/meizu/media/camera

iicc
02/05/15, 23:03:06
Justo lo acababa de hacer jaja
Está compilado, ahora lo subo

iicc
02/05/15, 23:07:37
Aquí está, solo puse lo de los 120 fps: https://drive.google.com/file/d/0B1WZs_VfDdzYQi0tOEYzMjdmUEk/view?usp=sharing

Ahora la pruebo

canitokintax
02/05/15, 23:14:23
Muy buena esta iniciativa. Lastima que todo me suene a chino

iicc
02/05/15, 23:15:55
mmm con el cambio del audio en cámara lenta da error al compilar...

iicc
02/05/15, 23:20:16
Voy a probar más configuraciones, con el audio da este error:
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\MzCamcorderPro fileManager.smali[552,4] 96000
cannot fit into a short
Camera\smali\com\meizu\media\camera\MzCamcorderPro fileManager.smali[554,4] misma
tched tree node: I_STATEMENT_FORMAT11n expecting I_CATCHES
Camera\smali\com\meizu\media\camera\MzCamcorderPro fileManager.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

iicc
02/05/15, 23:43:39
Más cosas interesantes del modo manual

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);
}Curioso esto que dice si el móvil es de china mobile, tiene las funciones de balance de blancos, saturación....
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;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..

kkdlux
03/05/15, 09:06:05
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.

iicc
03/05/15, 10:48:38
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.
Creo que los de china mobile es la rom C, no la U.

De todas formas ya lo probé y da error al compilar

kkdlux
03/05/15, 21:47:07
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.

iicc
03/05/15, 21:55:00
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

kkdlux
03/05/15, 23:39:02
Y tocando el media-profiles del pro?

iicc
04/05/15, 00:25:40
Y tocando el media-profiles del pro?
Eso no lo probé, la verdad.

Hasta dentro de una semana no voy a poder probar nada en el Pro..

kkdlux
04/05/15, 11:43:22
En el pro supongo que se podra poner ese archivo del galaxy alpha, 1080p@60 y 720p@120.

devilnevercry
05/05/15, 14:50:00
Me quedao to loco, eso del tinyplanet lo vi no me acuerdo donde, y con el mx4, y subirle los fps al slow motion también, no entiendo mucho lo que poneis, alguien ha conseguido añadirle alguna de estas opciones?? Seria el descubrimiento del siglo. Un saludo

Enviado desde mi MX4 mediante Tapatalk

kkdlux
05/05/15, 21:29:29
Me quedao to loco, eso del tinyplanet lo vi no me acuerdo donde, y con el mx4, y subirle los fps al slow motion también, no entiendo mucho lo que poneis, alguien ha conseguido añadirle alguna de estas opciones?? Seria el descubrimiento del siglo. Un saludo

Enviado desde mi MX4 mediante Tapatalk

El tiny planet está en la google camera.

La verdad yo voy a esperar a lollipop y empezar a mirarlo ahí ya que en mediatek.labs pone que las opciones de cámara lenta de más de 100fps, timelapse etc están activas en la build 21 que es lollipop, espero que sea así.

devilnevercry
06/05/15, 14:33:56
Se sabe para cuando mas o menos?? Gracias por la respuesta

Enviado desde mi MX4 mediante Tapatalk

kkdlux
06/05/15, 15:25:06
Fin de mes sale lollipop a partir de ahí no lo se, porque mediatek habla mucho y libera poco.

devilnevercry
11/05/15, 16:09:01
Gracias, pero me da que va a ser meizu y no mediatek, este procesador ofrece ciertas características que meizu no exprime y la unica explicación que encuentro es que si nos dieran todo lo que puede ofrecer el mx4 seria mucho mas completo que el pro. Gracias por la info

Enviado desde mi MX4 mediante Tapatalk

f_alba48
11/05/15, 17:07:30
@devi (http://www.htcmania.com/member.php?u=695928)lnevercry, empiezo a pensar que tienes razón y no quieren dejar que el buque insignia tenga menos características que el modelo que le sigue :(

canitokintax
12/05/15, 00:14:48
Es logico

devilnevercry
12/05/15, 15:36:08
Ahi en mi humilde opinión meizu se precipito al ponerle el exynos ese de Samsung, entonces estaba pegando fuerte, e ahi una prueba mas de que tenerl lo ultimo no es sinonimo de tener lo mejor, la verdad que lo que mas me tiraba patras del mx4 era el mtk y resulta que despues de trastear y muuuucho leer es lo mas pepino que trae, y aun se le puede sacar mas. Un saludo

Enviado desde mi MX4 mediante Tapatalk

kkdlux
14/05/15, 21:53:39
Aprovechando que he puesto lollipop he probado con opencamera de nuevo a ver si se puede cambiar algo.

No deja hacer nada, curiosamente deja los 720p a 100fps en camara lenta con sonido sin ralentizar y en h264.

Lo interesante es que en 30 fps y 24 todo funciona y no da error, si se pone otro framerate da error peeeero lo interesante es que los 100fps está admitido en todo, es decir, no hace camara lenta salvo en 720p pero no da el mensaje de framerate no soportado.

Esto es una buena o mala noticia, seguramente podamos hacer un fullhd a 100fps o 1920*1088 a 100fps, o 480 etc, pero de momento no veo que el teléfono admita otro rango de frames, que es lo principal, que lo admita y que grabe sonido.

kkdlux
20/05/15, 22:21:55
Añado una cosa curiosa, ahora en lollipop la cámara lenta es a 1280*720 cuando la última de kit kat era a 1280*736.

kkdlux
26/05/15, 22:06:15
Traigo novedades.

Tras cacharrear con el open camera y ver que admite 100fps aunque no graba a 100fps he probado a crear un media_profiles.xml copiandolo directamente del PRO.

Resultados, he aumentado los fps a 100 en 720 y 1080p además de los límites generales de h264.

En 720p graba a saltos, hace camara lenta y tiene sonido.

A 1080p sale una franja verdosa en un lado, he bajado bitrate y el resultado con poca luz es de mas de 60 (66-69)fps !!!

Todo esto en lollipop, a 240fps directamente no lo admite pero el movil arranca sin problemas.

Ahora lo interesante es saber como hacerlo en h265.


Una prueba que he hecho un momento, en youtube saldrá a 60fps y lo he grabado a 1088, con eso no sale la banda verde, el único bug es que corta la imagen antes de lo que acaba el video de verdad mientras sigue el sonido.

5bj_ykuZRtM

iicc
27/05/15, 18:22:20
Traigo novedades.

Tras cacharrear con el open camera y ver que admite 100fps aunque no graba a 100fps he probado a crear un media_profiles.xml copiandolo directamente del PRO.

Resultados, he aumentado los fps a 100 en 720 y 1080p además de los límites generales de h264.

En 720p graba a saltos, hace camara lenta y tiene sonido.

A 1080p sale una franja verdosa en un lado, he bajado bitrate y el resultado con poca luz es de mas de 60 (66-69)fps !!!

Todo esto en lollipop, a 240fps directamente no lo admite pero el movil arranca sin problemas.

Ahora lo interesante es saber como hacerlo en h265.


Una prueba que he hecho un momento, en youtube saldrá a 60fps y lo he grabado a 1088, con eso no sale la banda verde, el único bug es que corta la imagen antes de lo que acaba el video de verdad mientras sigue el sonido.

5bj_ykuZRtM

Entonces has copiado el media profiles del PRO directamente y ha funcionado? Y va el audio en cámara lenta?

kkdlux
27/05/15, 18:30:04
El audio va por su cuenta a velocidad normal, si se pone 100fps en 720p intenta hacer un camara lenta.
He subido el archivo en el hilo del media profiles.
Y si, el del pro tal cual pero el resto de opciones de camara en el pro estan en la app y en el mx4 en otro sitio, con lo que desaparecen y en 720p no hace slow motion y graba normal sin sonido.

kkdlux
03/06/15, 22:16:53
A ver si alguien me puede ayudar que esto no lo tengo claro.

Estoy buscando el camcorderprofile class, esto no se si es un archivo que se puede acceder por root o no.

El caso es que ahí están definidos los perfiles y o se modifican ahí o quizás se podría sacar la información para hacer el media_profiles.xml que los modifique.

http://developer.oesf.biz/em/developer/reference/durian/android/media/CamcorderProfile.html

Los perfiles actualizados a nuestro terminal con lollipop serían estos en principio:

http://developer.android.com/reference/android/media/CamcorderProfile.html

iicc
03/06/15, 22:26:50
A ver si alguien me puede ayudar que esto no lo tengo claro.

Estoy buscando el camcorderprofile class, esto no se si es un archivo que se puede acceder por root o no.

El caso es que ahí están definidos los perfiles y o se modifican ahí o quizás se podría sacar la información para hacer el media_profiles.xml que los modifique.

http://developer.oesf.biz/em/developer/reference/durian/android/media/CamcorderProfile.html

Los perfiles actualizados a nuestro terminal con lollipop serían estos en principio:

http://developer.android.com/reference/android/media/CamcorderProfile.html

Eso tiene toda la pinta de estar dentro de la apk, en el interior de algún smali

Blaxei
04/06/15, 15:32:26
Sería posible en un futuro obtener las características del MX4 PRO? O es completamente imposible?

iicc
04/06/15, 15:35:05
Sería posible en un futuro obtener las características del MX4 PRO? O es completamente imposible?
La cámara del pro no tiene nada especial que no la tenga el mx4, solo un postprocesado diferente

kkdlux
04/06/15, 17:08:18
Lo único que tiene el pro es una frontal de más megapixeles, es más, me atrevo a decir que hay más posibilidades en cuanto a video en el mx4 que en el pro.

El camcorderprofile estoy al 99% seguro que es parte de android y no de la app de cámara, lo que hace la app de cámara es llamar a esa clase al igual que otras apps de cámara genéricas.

kkdlux
11/06/15, 00:28:14
Brujuleando por ahí he visto que han intentado portar la app de camara del meizu para los sony Z porque da mejor calidad, lo curioso es que he encontrado datos interesantes sobre el slow motion:

http://forum.xda-developers.com/xperia-z1/general/porting-software-camera-meizu-mx4-sony-t2894195

Aparecen datos de 60 fps, 120 fps y 180 fps, ninguno activados en nuestros teléfonos, no tengo ni idea de donde ha visto esos perfiles.

Copio aquí lo que han quoteado que se supone que tenemos:

ic final QUALITY_MTK_LOW:I = 0x8
.field public static final QUALITY_MTK_MEDIUM:I = 0x9
.field public static final QUALITY_MTK_HIGH:I = 0xa
.field public static final QUALITY_MTK_FINE:I = 0xb
.field public static final QUALITY_MTK_NIGHT_LOW:I = 0xc
.field public static final QUALITY_MTK_NIGHT_MEDIUM:I = 0xd
.field public static final QUALITY_MTK_NIGHT_HIGH:I = 0xe
.field public static final QUALITY_MTK_NIGHT_FINE:I = 0xf
.field public static final QUALITY_MTK_LIVE_EFFECT:I = 0x10
.field public static final QUALITY_MTK_H264_HIGH:I = 0x11
.field public static final QUALITY_MTK_1080P:I = 0x12
.field public static final QUALITY_MTK_LIST_END:I = 0x12
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_HD_120FPS:I = 0x13
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_HD_180FPS:I = 0x14
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_HIGH:I = 0x15
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_FHD_120FPS:I = 0x16
.field public static final QUALITY_MTK_FINE_4K2K:I = 0x17
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_VGA_120FPS:I = 0x1f
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_HD_60FPS:I = 0x28
.field public static final CAMCORDER_QUALITY_MTK_SLOW_MOTION_FHD_60FPS:I = 0x32
.field public static final QUALITY_MTK_TIME_LAPSE_LIVE_EFFECT:I = 0x3f8
.field private static final QUALITY_MTK_TIME_LAPSE_LIST_END:I = 0x3fa

Al parecer los perfiles estan aquí:
libmedia.so
libmedia_jni.so

kkdlux
11/06/15, 00:41:25
Como puse en el principio, esto es lo que hay en la config:

if(ApiHelper.DEVICE_IS_M71C) {
QUALITY_VGA = 0xa;
QUALITY_SLOW_MOTION = 0xa;
return;
}
QUALITY_VGA = 0x18;
QUALITY_SLOW_MOTION = 0x15;


Yo supongo que cambiando el valor de esta línea por los del listado saldrían los equivalentes:

QUALITY_SLOW_MOTION = 0x15;

teoricamente:

0x13 = 720p 120fps
0x14 = 720p 180fps
0x15 = 720p 100fps ???
0x16 = 1080p 120fps

0x17 coincide plenamente con el perfil 4k en la app.

iicc
11/06/15, 00:43:08
Brujuleando por ahí he visto que han intentado portar la app de camara del meizu para los sony Z porque da mejor calidad, lo curioso es que he encontrado datos interesantes sobre el slow motion:

http://forum.xda-developers.com/xperia-z1/general/porting-software-camera-meizu-mx4-sony-t2894195

Aparecen datos de 60 fps, 120 fps y 180 fps, ninguno activados en nuestros teléfonos, no tengo ni idea de donde ha visto esos perfiles.

Copio aquí lo que han quoteado que se supone que tenemos:



Al parecer los perfiles estan aquí:
libmedia.so
libmedia_jni.so

Dice que los perfiles están aquí: 732063

Edit: vale ya lo viste

Como se abrirán las librerías para ver que hay dentro : O

Edit: he conseguido abrir los .so con un hex editor, pero no se distigue mucho. Supongo que los perfiles no los han cambiado desde octubre

kkdlux
11/06/15, 01:03:03
En el .so a lo bestia se ve texto, pero vamos, como si miramos un dex antes de sacar los smali.

Eso mismo estoy intentando averiguar yo, aunque al parecer muchos se pueden pasar a C de alguna manera.

kkdlux
11/06/15, 01:04:42
Acabo de probar una cosa, meter 180 fps en el media_profiles.xml en la resolución 720p y graba, por lo menos graba, eso es que se lo traga y existe :oh:

iicc
11/06/15, 01:05:46
En el .so a lo bestia se ve texto, pero vamos, como si miramos un dex antes de sacar los smali.

Eso mismo estoy intentando averiguar yo, aunque al parecer muchos se pueden pasar a C de alguna manera.
Con el Hex editor se puede ver lo que hay dentro más o menos, aquí está el editor: https://drive.google.com/file/d/0B1WZs_VfDdzYTk0xa3laUG9mVWc/view?usp=sharing

kkdlux
11/06/15, 01:30:26
Parece que con esto se puede sacar más:

https://www.hex-rays.com/products/ida/support/download_demo.shtml

Mañana le pego un vistazo, que me pide más librerías al abrir libmedia.so

iicc
11/06/15, 01:47:21
Parece que con esto se puede sacar más:

https://www.hex-rays.com/products/ida/support/download_demo.shtml

Mañana le pego un vistazo, que me pide más librerías al abrir libmedia.so
Puff si, si que pide librerías jajaja:
.plt:0004538C ; Needed Library 'libui.so'
.plt:0004538C ; Needed Library 'liblog.so'
.plt:0004538C ; Needed Library 'libcutils.so'
.plt:0004538C ; Needed Library 'libutils.so'
.plt:0004538C ; Needed Library 'libbinder.so'
.plt:0004538C ; Needed Library 'libsonivox.so'
.plt:0004538C ; Needed Library 'libicuuc.so'
.plt:0004538C ; Needed Library 'libexpat.so'
.plt:0004538C ; Needed Library 'libcamera_client.so'
.plt:0004538C ; Needed Library 'libstagefright_foundation.so'
.plt:0004538C ; Needed Library 'libgui.so'
.plt:0004538C ; Needed Library 'libdl.so'
.plt:0004538C ; Needed Library 'libaudioutils.so'
.plt:0004538C ; Needed Library 'libc.so'
.plt:0004538C ; Needed Library 'libstdc++.so'
.plt:0004538C ; Needed Library 'libm.so'
.plt:0004538C ; Shared Name 'libmedia.so'

kkdlux
11/06/15, 15:48:34
No se que pasa con el apktool que no me vuelve a compilar la apk, para probar lo que sería el perfil de 180fps

He modificado el smali:

camera/smali/com/meizu/media/camera/MzCamcorderProfileManager.smali

Esto en concreto, cambiando el 0x15 por 0x14

.line 21
const/16 v0, 0x14

sput v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_SLOW_MOTION:I

iicc
11/06/15, 15:56:06
No se que pasa con el apktool que no me vuelve a compilar la apk, para probar lo que sería el perfil de 180fps

He modificado el smali:

camera/smali/com/meizu/media/camera/MzCamcorderProfileManager.smali

Esto en concreto, cambiando el 0x15 por 0x14


Es curioso porque a mi me sale 0x8c1 en lugar de 0x14:

.line 21
const/16 v0, 0x8c1

sput v0, Lcom/meizu/media/camera/MzCamcorderProfileManager;->QUALITY_SLOW_MOTION:I

iicc
11/06/15, 16:20:43
Compila y todo pero sigue a 100fps, x4 a 24fps con la velocidad reducida

kkdlux
11/06/15, 16:24:36
:oh:

Pues vale, no entiendo nada, me sale 0x17 para 4k y en slow motion 0x15 como se supone que es para el mx4, aunque antes pone m71c

A ver si por lo de las librerias...

kkdlux
15/06/15, 15:35:32
He encontrado otra cosa interesante viendo documentacion de la camara frontal, acepta 60 fps en 720p y opcionalmente a 1080p.

El caso es que acepta 60p en ambas, 120p slow motion a 720p (y sin slow posiblemente) y a 1080p no llega aunque lo reconoce, probare en el media profiles a ver.

kkdlux
26/06/15, 21:56:28
Bueno, he encontrado que la libreria libmedia.so crea una especie de media profiles y ahí estan los perfiles.

Se me ha ocurrido tocar los fps con el hex editor y hasta el root explorer casca al copiar la librería, después de eso al reiniciar se me quedaba en la pantalla de meizu.....

Estoy metiendo la rom de nuevo, que se ve que los 180fps como que no los acepta así a lo loco.

canitokintax
27/06/15, 00:01:49
Animo compañero, gran trabajo!

Enviado desde mi MX4 mediante Tapatalk

sykes
27/06/15, 19:06:16
se puede portar esta camara a otro movil?

lafurgo
28/06/15, 10:14:03
Y al Pro? No me instla l apk que sale mas atrás

Enviado desde mi MX4 Pro mediante Tapatalk

kkdlux
28/06/15, 16:03:23
El pro es otra cpu y no se aplica.

abreu23
06/07/15, 14:18:13
entonces los del pro podemos mejorar en algo la camara?

Os leo y me suena todo a arameo

kkdlux
06/07/15, 21:50:54
entonces los del pro podemos mejorar en algo la camara?

Os leo y me suena todo a arameo

De momento el bitrate de la cámara y el sonido y puede que calidad jpg, más ni idea porque no tengo uno y funciona de distinta manera al MX4 con mediatek.

marietuno
14/07/15, 19:31:01
Se sabe algo de las funciones que puede dar como lo de tiny planet, HDR+, etc...?
No es posible sacar una apk compilada?

marietuno
14/07/15, 19:31:33
Se supone que con la versión de lollipop debería haber cambios, aunque sea en la traducción de la cámara jajajaja, porque cada beta nueva tengo que instalar el mod de camara de iicc.

lafurgo
14/07/15, 20:53:15
De momento el bitrate de la cámara y el sonido y puede que calidad jpg, más ni idea porque no tengo uno y funciona de distinta manera al MX4 con mediatek.
He buscado y no encuentro nada de eso que dices... Como lo hago?

Enviado desde mi MX4 Pro mediante Tapatalk

kkdlux
14/07/15, 21:42:03
Se sabe algo de las funciones que puede dar como lo de tiny planet, HDR+, etc...?
No es posible sacar una apk compilada?

Estan en parte metidas pero no estan implementadas para que aparezcan en la app, hay que "programar" la parte que falta o al menos por lo poco que se enlazar y hacer los menús para que aparezcan.

La pena es que no haya un programador o desarrollador por aquí con el tlf que pudiese hacerlo :(

kkdlux
14/07/15, 21:42:53
He buscado y no encuentro nada de eso que dices... Como lo hago?

Enviado desde mi MX4 Pro mediante Tapatalk

En el hilo que hablo del media_profiles.xml comento como se hace ya que me basé en el del pro.

iicc
24/07/15, 22:04:24
He sacado "el código fuente" de la app de cámara del Meizu, lo dejo aquí por si veís algo para modificar, al estar en java es más fácil hacerse la idea que si está en smali https://drive.google.com/file/d/0B1WZs_VfDdzYZEkyWHJMSmxVUGc/view?usp=sharing

Estoy intentando portar la camara de Oppo pero está complicado..

kkdlux
24/07/15, 23:04:27
Qué tiene de especial la cámara del Oppo?

iicc
24/07/15, 23:11:42
Qué tiene de especial la cámara del Oppo?
Es espectacular, tiene miles de modos.

La mejor aplicación de fotografía que hay creo yo.

Algunas capturas que me han pasado:
751536751537751538751539751540751541

kkdlux
24/07/15, 23:15:46
En XDA han portado una genérica.

http://forum.xda-developers.com/oneplus-one/themes-apps/coloros-camera-port-t3034148

Voy a probar si funciona, de todas maneras qué problemas encuentras?

iicc
24/07/15, 23:43:52
No la había visto..
De todas formas he probado y tampoco va, se queda la pantalla negra. Supongo que portar esta será más fácil que intentar hacerlo de cero.

Estos eran los errores que encontraba con la otra:

E/OppoCamera( 7163): mi.totalMem1984946176
I/BufferQueueProducer( 250): [com.oppo.camera/com.oppo.camera.Camera](this:0xb603bc00,id:58,api:1,p:7163,c:250) new GraphicBuffer needed
E/OppoCamera( 7163): mi.totalMem1984946176

W/System.err( 7163): at com.oppo.camera.device.QcomCameraParameters.getMax Sharpness(QcomCameraParameters.java:217)
W/System.err( 7163): at com.oppo.camera.ParameterManager.qcomUpdateCameraP arametersPreference(ParameterManager.java:511)

W/System.err( 7163): at com.oppo.camera.ParameterManager.updateCameraParam etersPreference(ParameterManager.java:403)

W/System.err( 7163): at com.oppo.camera.ParameterManager.setCameraParamete rs(ParameterManager.java:342)

W/System.err( 7163): at com.oppo.camera.CameraProcessManager.startPreview( CameraProcessManager.java:496)
W/System.err( 7163): at com.oppo.camera.Camera.afterOpenCamera(Camera.java :2568)

W/System.err( 7163): at com.oppo.camera.CameraProcessManager$CameraStartUp Thread.run(CameraProcessManager.java:420)

En esta app portada da otros fallos diferentes

marietuno
30/07/15, 11:44:46
Yo también tengo pantalla negra... Es una pena, no scamos ni la genérica del meizu ni esta

tomakedale
30/07/15, 13:22:57
joo que pena,pues seria un puntazo,por cierto que camaras utilizais aparte de la nativa de meizu,alguna que en modo automatico no sea tan sensible al movimiento,gracias

iicc
30/07/15, 13:30:51
Después de modificar varias cosas de la apk, al menos he conseguido que salga esto..


753767

kkdlux
30/07/15, 13:49:25
Yo no recuerdo qué versión de las modificadas puse que aparecía en negro pero en el icono de la galería salía la última imagen.