JSBool ADM_JSAvidemuxVideo::SetFps1000(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin PostProcess
int fps;
aviInfo info;

        if(argc != 1)
          return JS_FALSE;
        if(JSVAL_IS_INT(argv[0]) == false)
          return JS_FALSE;

        enterLock();
        video_body->getVideoInfo(&info);
        video_body->getVideoInfo (avifileinfo);


        // default return value
        fps=JSVAL_TO_INT(argv[0]);
        if(fps>100000 || fps<2000)
        {      
                printf("Fps too low\n");
                leaveLock();
                return JS_FALSE;
        }       
 	
       info.fps1000=fps;
        video_body->updateVideoInfo(&info);
        
	leaveLock();
        return JS_TRUE;
}// end PostProcess
JSBool ADM_JSAvidemuxAudio::secondAudioTrack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
        ADM_JSAvidemuxAudio *p = (ADM_JSAvidemuxAudio *)JS_GetPrivate(cx, obj);
        if(argc != 2)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false || JSVAL_IS_STRING(argv[1]) == false)
                return JS_FALSE;
        // First arg is MP3 etc...
        char *name = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        LowerCase(name);
        // First search the codec by its name
        AudioSource source;
        if(AudioInvalid==(source=audioCodecGetFromName(name)))
                return JS_FALSE;
        // Now get the name
        name = JS_GetStringBytes(JSVAL_TO_STRING(argv[1]));
        enterLock();
        if(A_setSecondAudioTrack(source,name))
        {
                leaveLock()
                return JS_TRUE;
        }
        leaveLock()
      return JS_FALSE;
}
JSBool ADM_JSAvidemux::Load(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin Load
        JSBool ret=JS_FALSE;
        ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 1)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false)
                return JS_FALSE;
        char *pTempStr = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        printf("Loading \"%s\"\n",pTempStr);
        // Do a failure instead of returing ko
        *rval = BOOLEAN_TO_JSVAL(JS_TRUE);
        enterLock();
        if(!A_openAvi(pTempStr)) 
        {
          ret= JS_FALSE;	
        }else 
        {
          ret=JS_TRUE;
        }
        leaveLock();
	return ret;
}// end Load
int commandManager::getSize(void)
{
	int size = 0;
	enterLock();
	size = adbList.size();
	leaveLock();

	return size;
}
Beispiel #5
0
LinkedDouble *LinkedDouble::getLast(void)
{
	LinkedDouble *node;

  enterLock();
  node = lastObject();
  leaveLock();

	return node;
}
JSBool ADM_JSAvidemuxAudio::Load(JSContext *cx, JSObject *obj, uintN argc, 
                                      jsval *argv, jsval *rval)
{// begin Load
        ADM_JSAvidemuxAudio *p = (ADM_JSAvidemuxAudio *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 2)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false || JSVAL_IS_STRING(argv[1]) == false)
                return JS_FALSE;
        char *pTempStr = JS_GetStringBytes(JSVAL_TO_STRING(argv[1]));
        char *pArg0 = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        printf("Loading Audio \"%s\"\n",pTempStr);

        // 1st arg is type
        AudioSource src;
        int result=0;
        
        src=audioSourceFromString(pArg0);
        if(!src) {printf("[Script]Invalid audiosource type\n");return JS_FALSE;}
        enterLock();
        switch(src)
        {
                case AudioAvi:
                        result = A_changeAudioStream (aviaudiostream, AudioAvi,NULL);
                        break;
                case AudioMP3:
                        result = A_loadMP3(pTempStr);
                        break;
                case AudioWav:
                        result = A_loadWave(pTempStr);
                        break;
                case AudioAC3:
                        result = A_loadAC3(pTempStr);
                        break;
                case AudioNone:
                        result = A_changeAudioStream(NULL,AudioNone,NULL);
                        break;
                default:
                        ADM_assert(0);
                        break;
        }
        leaveLock()
        printf("[script] ");
        
        if(!result)
                printf("failed :");
        else
                printf("succeed :");
        printf(" external source %d (%s) \n", src,pTempStr);

        *rval = INT_TO_JSVAL(result);
        return JS_TRUE;
}// end Load
JSBool ADM_JSAvidemux::JSGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
        if (JSVAL_IS_INT(id)) 
        {
                ADM_JSAvidemux *priv = (ADM_JSAvidemux *) JS_GetPrivate(cx, obj);
                switch(JSVAL_TO_INT(id))
                {

                        case markerA_prop:
                                *vp = INT_TO_JSVAL(frameStart);
                                break;
                        case markerB_prop:
                                *vp = INT_TO_JSVAL(frameEnd);
                                break;
                        case audio_prop:
                                *vp = OBJECT_TO_JSVAL(priv->getObject()->m_pAudio);
                                break;
                        case video_prop:
                                *vp = OBJECT_TO_JSVAL(priv->getObject()->m_pVideo);
                                break;
                        case container_prop:
                                *vp = STRING_TO_JSVAL(priv->getObject()->m_pContainer);
                                break;
                        case currentframe_prop:
                                *vp = INT_TO_JSVAL(priv->getObject()->m_nCurrentFrame);
                                break;
                        case fps_prop:
                                {
                                        aviInfo info;

                                        if (avifileinfo)
                                        {
                                                enterLock();
                                                video_body->getVideoInfo(&info);
                                                priv->getObject()->m_dFPS = info.fps1000/1000.0; 
                                                video_body->updateVideoInfo (&info);
                                                video_body->getVideoInfo (avifileinfo);
                                                leaveLock();
                                        } 
                                        else 
                                        {
                                                return JS_FALSE;
                                        }
                                        *vp = DOUBLE_TO_JSVAL(priv->getObject()->m_dFPS);
                                }
                                break;
                }
        }
        return JS_TRUE;
}
JSBool ADM_JSAvidemux::forceUnpack(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin GoToTime
        ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 0)
                return JS_FALSE;
        enterLock();
        video_body->setEnv(ENV_EDITOR_PVOP);
        leaveLock();
        *rval = INT_TO_JSVAL(1);
        return JS_TRUE;
}// end GoToTime
JSBool ADM_JSAvidemuxVideo::Clear(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin Clear
        ADM_JSAvidemuxVideo *p = (ADM_JSAvidemuxVideo *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 0)
                return JS_FALSE;
        printf("Clearing Video... \n");
        enterLock();
        *rval = BOOLEAN_TO_JSVAL(video_body->deleteAllSegments());
        leaveLock();
        return JS_TRUE;
}// end Clear
JSBool ADM_JSAvidemuxAudio::Reset(JSContext *cx, JSObject *obj, uintN argc, 
                                      jsval *argv, jsval *rval)
{// begin Reset
        ADM_JSAvidemuxAudio *p = (ADM_JSAvidemuxAudio *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 0)
                return JS_FALSE;
        enterLock();
        audioReset();
        leaveLock()
        *rval = BOOLEAN_TO_JSVAL(true);
        return JS_TRUE;
}// end Reset
JSBool ADM_JSAvidemuxVideo::GetHeight(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin PostProcess
aviInfo info;
        if(argc != 0)
          return JS_FALSE;

        enterLock();
        video_body->getVideoInfo(&info);
        leaveLock();
        
        *rval = INT_TO_JSVAL(info.height);
        return JS_TRUE;
}// end PostProcess
JSBool ADM_JSAvidemuxVideo::CodecConf(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin CodecConf
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 1)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false)
                return JS_FALSE;
        char *pTempStr = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        printf("Codec Conf Video \"%s\"\n",pTempStr);
        enterLock();
        *rval = INT_TO_JSVAL(loadVideoCodecConf(pTempStr));
        leaveLock();
        return JS_TRUE;
}// end CodecConf
AndroidDebugBridge* commandManager::getAdb(void)
{
	if(getSize() <= 0)
		return NULL;

	AndroidDebugBridge * result = NULL;

	enterLock();
	result = *adbList.begin();
	if(result)
		adbList.pop_front();
	leaveLock();

	return result;
}
JSBool ADM_JSAvidemuxVideo::GetFCC(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin PostProcess
aviInfo info;

        if(argc != 0)
          return JS_FALSE;

        enterLock();
        video_body->getVideoInfo(&info);
        leaveLock();
        
        *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, fourCC::tostring(info.fcc)));
        return JS_TRUE;
}// end PostProcess
Beispiel #15
0
void LinkedDouble::detach(void)
{
	enterLock();

	if(prevObject)
		prevObject->nextObject = nextObject;

	if(nextObject)
		nextObject->prevObject = prevObject;

	prevObject = NULL;
	nextObject = NULL;

	leaveLock();
}
JSBool ADM_JSAvidemux::GoToTime(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin GoToTime
	ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
	// default return value
	*rval = BOOLEAN_TO_JSVAL(false);
	if(argc != 3)
		return JS_FALSE;
	if(JSVAL_IS_INT(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false || JSVAL_IS_INT(argv[2]) == false)
		return JS_FALSE;
        enterLock();
	*rval = INT_TO_JSVAL(A_jumpToTime(JSVAL_TO_INT(argv[0]),JSVAL_TO_INT(argv[1]),JSVAL_TO_INT(argv[2]), 0));
	leaveLock();
	return JS_TRUE;
}// end GoToTime
JSBool ADM_JSAvidemuxAudio::ScanVBR(JSContext *cx, JSObject *obj, uintN argc, 
                                      jsval *argv, jsval *rval)
{// begin ScanVBR
        ADM_JSAvidemuxAudio *p = (ADM_JSAvidemuxAudio *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 0)
                return JS_FALSE;
        printf("Scaning Audio... \n");
        enterLock();
        HandleAction(ACT_AudioMap);
        leaveLock()
        *rval = BOOLEAN_TO_JSVAL(true);
        return JS_TRUE;
}// end ScanVBR
JSBool ADM_JSAvidemuxVideo::hasQpel(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin PostProcess
uint32_t info;
        if(argc != 0)
          return JS_FALSE;
        
        enterLock();
        info=video_body->getSpecificMpeg4Info();
        leaveLock(); 
        
        *rval=JS_FALSE;
        if(info & ADM_QPEL_ON) *rval=JS_TRUE;
        return JS_TRUE;
}// end PostProcess
JSBool ADM_JSAvidemux::smartcopyMode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{

ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        printf("[JS]Setting smart copy mode(1)\n");
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 0)
                return JS_FALSE;
        printf("[JS]Setting smart copy mode (2)\n");
        enterLock();
        video_body->setEnv(ENV_EDITOR_SMART);
        *rval = BOOLEAN_TO_JSVAL( true);
        leaveLock();
        return JS_TRUE;
}
JSBool ADM_JSAvidemux::rebuildIndex(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin GoToTime
        ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 0)
                return JS_FALSE;
        enterLock();
        if(!video_body->isReordered(0)) // already done
        {
          video_body->rebuildFrameType();
        }
 	leaveLock();
       return JS_TRUE;
}// end GoToTime
JSBool ADM_JSAvidemuxVideo::Add(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin Add
        ADM_JSAvidemuxVideo *p = (ADM_JSAvidemuxVideo *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 3)
                return JS_FALSE;
        if(JSVAL_IS_INT(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false  || JSVAL_IS_INT(argv[2]) == false)
                return JS_FALSE;
        printf("Adding Video... \n");
        enterLock();
        *rval = BOOLEAN_TO_JSVAL(video_body->addSegment(JSVAL_TO_INT(argv[0]),JSVAL_TO_INT(argv[1]),JSVAL_TO_INT(argv[2])));
        leaveLock();
        return JS_TRUE;
}// end Add
JSBool ADM_JSAvidemuxVideo::SaveJPEG(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin SaveJPG
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 1)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false)
                return JS_FALSE;
        char *pTempStr = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        printf("Saving JPEG \"%s\"\n",pTempStr);
        enterLock();
        *rval = INT_TO_JSVAL(A_saveJpg(pTempStr));
        leaveLock();
        return JS_TRUE;
}// end SaveJPG
JSBool ADM_JSAvidemuxVideo::isVopPacked(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin PostProcess
int32_t info;
        if(argc != 0)
          return JS_FALSE;

      enterLock();
       info=video_body->getSpecificMpeg4Info();
       leaveLock();
         
        // default return value
        *rval=JS_FALSE;
        if(info & ADM_VOP_ON) *rval=JS_TRUE;
        return JS_TRUE;
}// end PostProcess
JSBool ADM_JSAvidemux::setContainer(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{

ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 1)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false)
                return JS_FALSE;
        char *str = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        enterLock();
        if(A_setContainer(str))
                *rval = BOOLEAN_TO_JSVAL( true);
        leaveLock();
        return JS_TRUE;
}
JSBool ADM_JSAvidemux::Save(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin Save
        ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 1)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false)
                return JS_FALSE;
        char *pTempStr = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        printf("Saving \"%s\"\n",pTempStr);
        enterLock();
        *rval = BOOLEAN_TO_JSVAL(A_Save(pTempStr));
        leaveLock();
        return JS_TRUE;
}// end Save
JSBool ADM_JSAvidemuxVideo::ListBlackFrames(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin ListBlackFrames
        
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 1)
          return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false)
          return JS_FALSE;
        
        enterLock();
        A_ListAllBlackFrames(JS_GetStringBytes(JSVAL_TO_STRING(argv[0])));
        leaveLock();
        *rval = BOOLEAN_TO_JSVAL(true);
        return JS_TRUE;
}// end ListBlackFrames
JSBool ADM_JSAvidemuxVideo::PostProcess(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin PostProcess
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 3)
                return JS_FALSE;
        if(JSVAL_IS_INT(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false || JSVAL_IS_INT(argv[2]) == false)
                return JS_FALSE;
        
        enterLock();
        int rtn =video_body->setPostProc(
            JSVAL_TO_INT(argv[0]),JSVAL_TO_INT(argv[1]),JSVAL_TO_INT(argv[2]));
        leaveLock();
        *rval = BOOLEAN_TO_JSVAL(rtn);
        return JS_TRUE;
}// end PostProcess
JSBool ADM_JSAvidemux::Delete(JSContext *cx, JSObject *obj, uintN argc, 
                                       jsval *argv, jsval *rval)
{// begin Delete
        ADM_JSAvidemux *p = (ADM_JSAvidemux *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 2)
                return JS_FALSE;
        if(JSVAL_IS_INT(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false)
                return JS_FALSE;
        int a = JSVAL_TO_INT(argv[0]);
        int b = JSVAL_TO_INT(argv[1]);
        aprintf("Deleting %d-%d\n",a,b);
        enterLock();
        *rval = BOOLEAN_TO_JSVAL(A_delete(a,b));
        leaveLock();
        return JS_TRUE;
}// end Delete
JSBool ADM_JSAvidemuxAudio::Codec(JSContext *cx, JSObject *obj, uintN argc, 
                                      jsval *argv, jsval *rval)
{// begin Codec
        ADM_JSAvidemuxAudio *p = (ADM_JSAvidemuxAudio *)JS_GetPrivate(cx, obj);
        // default return value
        *rval = BOOLEAN_TO_JSVAL(false);
        if(argc != 4)
                return JS_FALSE;
        if(JSVAL_IS_STRING(argv[0]) == false || JSVAL_IS_INT(argv[1]) == false || JSVAL_IS_INT(argv[2]) == false  ||  JSVAL_IS_STRING(argv[3]) == false  )
                return JS_FALSE;
        char *name = JS_GetStringBytes(JSVAL_TO_STRING(argv[0]));
        LowerCase(name);
        enterLock();
        // First search the codec by its name
        if(!audioCodecSetByName(name))
                *rval = BOOLEAN_TO_JSVAL(false);
        else
        {// begin set bitrate
        //audioFilter_SetBitrate(JSVAL_TO_INT(argv[1]));
          uint32_t bitrate,size;
          char  *extra;
          uint8_t *data=NULL;
                bitrate=JSVAL_TO_INT(argv[1]);
                size=JSVAL_TO_INT(argv[2]);
                extra=JS_GetStringBytes(JSVAL_TO_STRING(argv[3])); 
                if(size)
                {
                          data=new uint8_t[size];
                          for (uint32_t k = 0; k < size; k++)
                            {
                              data[k] = mk_hex (*extra, *(extra + 1));
                              extra += 3;
                            }
                        setAudioExtraConf(bitrate,size,data);
                        delete [] data; 
                }else{
			audioFilter_SetBitrate(JSVAL_TO_INT(argv[1]));
		}

                *rval = BOOLEAN_TO_JSVAL(true);
        }// end set bitrate
        leaveLock()
        return JS_TRUE;
}// end Codec
Beispiel #30
0
void LinkedDouble::insert(LinkedDouble& obj, InsertMode position)
{
  LinkedDouble *node;

  enterLock();
  obj.detach();

  switch ( position )
  {
    case modeAtFirst :
      node = firstObject();
      obj.nextObject = node;
      node->prevObject = &obj;
      break;

    case modeBefore :
      obj.nextObject = this;
      obj.prevObject = this->prevObject;
      this->prevObject = &obj;
      if (obj.prevObject)
        obj.prevObject->nextObject = &obj;
      break;

    case modeAfter :
      obj.nextObject = this->nextObject;
      obj.prevObject = this;
      this->nextObject = &obj;
      if (obj.nextObject)
        obj.nextObject->prevObject = &obj;
      break;

    case modeAtLast :
    default :
      node = lastObject();
      obj.nextObject = node->nextObject;
      obj.prevObject = node;
      node->nextObject = &obj;
      if(obj.nextObject)
        obj.nextObject->prevObject = &obj;
      break;
  }
  leaveLock();
}