IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Code JNI et thread Java


Sujet :

Entrée/Sortie Java

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Code JNI et thread Java
    Bonjour à tous,

    j'ai actuellement un code jni (decoder h264 via ffmpeg) qui fonctionne quand il est utilisé par un thread.
    Cependant mon application peut utiliser plusieurs instance de ce thread (jusqu'à 12) et donc devrait normalement avoir plusieurs décodeur.

    Quand j'utilise plusieurs thread j'ai l'impression que le code JNI utilisé est le même et du coup ça me pose problème car l'intiialisation de mon code JNI n'est pas identique selon les threads et certaines variables globale au script jni sont partagées entre les thread ce qui ne devrait pas arrivé.

    Exemple de mon code JNI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    AVCodec *codec;
    AVCodecContext *codecCtx;
    AVFrame *frameSrc;
    AVFrame *frameRGBA;
     
    jboolean Java_pry_dpcom_net_ThreadVideo_init(JNIEnv* env,jobject obj, jint width, jint height)
    {
        frameRGBA       = NULL;
        frameSrc        = NULL;
        convertCtx      = NULL;
        codecCtx        = NULL;
     
        av_register_all();
     
        codecCtx = avcodec_alloc_context3(NULL);
     
        codecCtx->width = width;
        codecCtx->height = height;
        codecCtx->pix_fmt = PIX_FMT_YUV420P;
     
        frameSrc = av_frame_alloc();
        frameRGBA = av_frame_alloc();
     
        int res = avcodec_open2(codecCtx, codec, NULL);
     
        if(res != 0)
            return JNI_FALSE;
     
        return JNI_TRUE;
    }
    Dans mon thread je déclare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private native boolean init(int w,int h);
    Et donc chaque thread lancé va faire un appel du type init(640,480);
    1- Est-il exacte qu'un même code JNI est commun à tout les thread l'utilisant ?
    2- Si oui y'a t'il des solutions pour avoir une "instance" de code JNI par thread ?

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    J'ai fini par déclarer toutes mes variables C en tant que tableaux de taille X (X étant le maximum de thread possible).
    Du coup j'a itoujours qu'une instance de code JNI mais chaque thread java à ses propres variables. Ce n'est peut être pas LA méthode , mais ça fonctionne.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Débugger du code C appelé par Java JNI (appli web)
    Par LinoaHeart dans le forum Eclipse C & C++
    Réponses: 1
    Dernier message: 26/10/2010, 10h08
  2. [JNI] Problème dû aux threads Java
    Par seiryujay dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/11/2006, 13h14
  3. [JNI] Class Thread et Synchronisation
    Par SteelBox dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/02/2006, 23h40
  4. Problème d'execution de code dans un thread
    Par [Silk] dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2006, 13h49
  5. [PROFILER][THREAD][java.prof] outil gratuit/complet?
    Par narmataru dans le forum Général Java
    Réponses: 11
    Dernier message: 16/11/2005, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo