TT#69459 Fix media initialisation in CscMedia component

Change-Id: Ifc54b9851716a8b42d13adb5e842847c5c683b15
changes/64/34664/1
Hans-Peter Herzog 6 years ago
parent 5d930a509b
commit b9bb89d765

@ -23,7 +23,7 @@
:muted="muted" :muted="muted"
@click="fitMedia" @click="fitMedia"
@resize="fitMedia" @resize="fitMedia"
/> ></video>
</div> </div>
</template> </template>
@ -43,7 +43,7 @@
], ],
data () { data () {
return { return {
currentStream: this.stream, currentStream: null,
loading: true, loading: true,
mediaHeight: 0, mediaHeight: 0,
mediaWidth: 0, mediaWidth: 0,
@ -52,6 +52,7 @@
} }
}, },
mounted () { mounted () {
this.assignStream(this.stream);
let fitMedia = ()=>{ this.fitMedia(); }; let fitMedia = ()=>{ this.fitMedia(); };
this.$root.$on('window-resized', fitMedia); this.$root.$on('window-resized', fitMedia);
this.$root.$on('content-resized', fitMedia); this.$root.$on('content-resized', fitMedia);
@ -63,27 +64,43 @@
}, },
methods: { methods: {
assignStream(stream) { assignStream(stream) {
this.currentStream = stream; if(stream !== this.currentStream && stream !== null && stream !== undefined) {
if(_.isObject(this.currentStream) && _.isObject(this.$refs.media) && this.loading = true;
!_.isUndefined(this.$refs.media.srcObject)) { this.currentStream = stream;
this.$refs.media.srcObject = this.currentStream; if(_.isObject(this.currentStream) && _.isObject(this.$refs.media) &&
} !_.isUndefined(this.$refs.media.srcObject)) {
else if(_.isObject(this.currentStream) && _.isObject(this.$refs.media) && this.$refs.media.srcObject = this.currentStream;
!_.isUndefined(this.$refs.media.mozSrcObject)) { }
this.$refs.media.mozSrcObject = this.currentStream; else if(_.isObject(this.currentStream) && _.isObject(this.$refs.media) &&
} !_.isUndefined(this.$refs.media.mozSrcObject)) {
else if(_.isObject(this.currentStream) && _.isObject(this.$refs.media) && this.$refs.media.mozSrcObject = this.currentStream;
_.isObject(URL) && _.isFunction(URL.createObjectURL)) { }
this.$refs.media.src = URL.createObjectURL(this.currentStream); else if(_.isObject(this.currentStream) && _.isObject(this.$refs.media) &&
_.isObject(URL) && _.isFunction(URL.createObjectURL)) {
this.$refs.media.src = URL.createObjectURL(this.currentStream);
}
let timer = setInterval(()=>{
if(this.currentStream !== null && (this.$refs.media && (this.$refs.media.currentTime > 0 ||
this.$refs.media.readyState > 2))) {
this.loading = false;
clearInterval(timer);
this.fitMedia();
}
}, 100);
} }
let timer = setInterval(()=>{ else {
if(this.currentStream !== null && (this.$refs.media.currentTime > 0 || this.loading = false;
this.$refs.media.readyState > 2)) { this.currentStream = null;
this.loading = false; if(this.$refs.media.srcObject) {
clearInterval(timer); this.$refs.media.srcObject = null;
this.fitMedia(); }
else if(this.$refs.media.mozSrcObject) {
this.$refs.media.mozSrcObject = null;
}
else {
this.$refs.media.src = null;
} }
}, 100); }
}, },
fitMediaToParent() { fitMediaToParent() {
if(this.$refs.media && this.$refs.media && if(this.$refs.media && this.$refs.media &&
@ -163,22 +180,7 @@
}, },
watch: { watch: {
stream(stream) { stream(stream) {
if(stream !== null && stream !== this.currentStream) { this.assignStream(stream);
this.loading = true;
this.assignStream(stream);
}
else {
this.currentStream = null;
if(this.$refs.media.srcObject) {
this.$refs.media.srcObject = null;
}
else if(this.$refs.media.mozSrcObject) {
this.$refs.media.mozSrcObject = null;
}
else {
this.$refs.media.src = null;
}
}
}, },
muted(muted) { muted(muted) {
this.$refs.media.muted = muted; this.$refs.media.muted = muted;

Loading…
Cancel
Save