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