Welcome everybody, my name is Laurent Penchard, I'm the CEO of Horizon Board and main architect of the Libcam project And that's what we're gonna talk about today And I'll try in just 40 minutes to show you how easy and quick it is to support for your platform in Libcam So let's imagine the following situation. Okay. First. Let's imagine that this would work. There you go You have a brand new SOC, okay, you're working for an SOC vendor you creating a brand new platform This is gonna be amazing You're about to release that to the public and that SOC has the best camera hardware ever So you want to make sure that all your customer can benefit from that You are about to unveil that to the general world You're really excited about it You've prepared a development board that's gonna be cheap and then that everybody want to buy and Because we all engineers and you extremely good at marketing coming up with names. You decided to call that the broccoli pie, okay It's gonna be a hit with the kids they love broccoli's so You've done your homework You've watched videos in YouTube of previous talks on how to enable support on the camera side for camera sensor drivers For your ISP driver, so you've done all that. This is not what we're gonna talk about today And You have of course decided to use the media control API the v4 to API you're going upstream of the drivers You have not been shy asking for support from the the video filmmakers community because these things can be quite hard But let's assume that all that is done, right? Actually your hardware may be a bit more complex than that So let's add just a tiny bit of complexity and you may have something that looks like that, okay, and You may be a bit concerned. That's gonna be a bit hard to swallow for the users so Fortunately you have also seen Presentations about the camera and you know it is the thing over there that seems to be exactly what I need and you're absolutely right So let's see how the camera can help you The first question Who does not know who has never heard of the camera before? Okay, one hand at least two three. Okay, there's a few great Very happy because the front row here everybody has a leap camera t-shirt. So I have been kind of I don't know I assume you may not learn that much today But yes, hopefully there will be other people in the room who will come out with additional information. Okay, so What is leap camera? Leap camera if you're familiar with the graphics world Or describe that as the Mesa of the camera of the camera world So it's a complete user space camera stack as I mentioned you've your new homework on the kernel side It camera does not touch the kernel. It assumes that we have kernel drivers But it provides a complete stack in user space So it handles things like enumeration of cameras, right? It will automatically figure out what's in your system Exposes that to your applications And it supports for each camera that it finds you the system capturing multiple streams At the same time in different resolutions different formats with different properties And it also support controlling all the parameters of the camera for every single frame that you capture So compared to using a USB webcam and using the Vfold we pair directly you have a lower level a much more powerful control of all your camera parameters We're talking potentially about hundreds of different tunable parameters that that you could set And I think probably needs a new battery at some point. So this is what leap camera looks like At the very bottom Yeah, laser pointer works as well. You have the hardware you've done that Remember first lines you've got amazing hardware and you have extreme kernel drivers on top of that. So the camera is everything that sits on top and Looking at what we have in there the first thing that Can I mention for those who are not familiar with the camera is kind of the entry point? So we have an object called the camera manager Be relatively brief on that because the goal is to see how to add support for you platform Camera, but it's important to understand the architecture This is what your applications will go to to get all the cameras in the system to marry the cameras to see what's there to get hold of cameras and and use them And we do have another component in leap camera Well camera manager first so I mentioned enumeration of all the devices in the system and A new word that we're introducing here creation of what we call pipeline handlers So the pipeline handler in the camera is the platform specific component that handles all the plumbing It's gonna handle communication with the kernel with all the drivers not just necessarily not just the current directly You could have a camera pipeline that That uses a GPU for processing for instance So your pipeline handlers read a piece of plumbing that will take all the all the harder pieces all the all the processing pieces And put them together in platform specific way so Your camera manager has enumerated cameras It's instantiate pipeline handlers that will register one or more cameras You may have a single single or multiple cameras you ported in in your system and We're getting to the part that I mentioned is here The platform specific part so you have on the right hand side in green the pipeline handler will dive a bit into that Because I'm gonna show you how you can implement this for your platform and the left hand side It's the counterpart to the to the pipeline handler part. That's also platform specific and That's all the image processing algorithms when I'm talking about image processing algorithms. You call that IPA In lead camera Nothing to do with the beers although. I'm sure that few people will exit this room were wishing it would have been be instead But those are not Algorithms that will process the image directly. We're talking here about ISP control harder processing a few images But it's all the algorithms that will compute the hundreds sometimes thousands of parameters that need to be set at the hardware level For every single frame that will be processed. So if you're familiar a bit with Control control theory and Things like PIDs for instance, you can imagine like this would be a PID on steroids instead of having one input and one output parameter you have Thousands of input thousands of outputs and this works in real time and that's really the control loop of your system So that's really the hardware specific part As I mentioned the pipeline handler interface it with the kernel We'll figure out All the video for Linux media device anything in these to use and abstract all of that towards your application sleep camera Does not expose anything that's the video for Linux specific to applications The application is in camera does not even see the vehicle to pixel format. It's really completely hidden behind the scene and There we go As I mentioned already your image processing processing algorithms your IP module will Typically consume statistics are computed by the hardware because when you have high resolution high frame-raised computing statistics with the CPU is expensive So ISPs assist with that It consumes them and calculate the parameters to be applied to the next stream if you had to put that in Really simplified way the studies will show all the images be too dark. I'm gonna push the exposure time up There's way more than that so when it comes to the The image processing algorithms and the IP modules. They are a live camera separate modules they run they they loaded at runtime the pluggable and The idea is that it completely isolated from the rest They only communicate with your pipeline handler. They do not access the hardware directly ever So that's an architecture decision the pipeline handler is part of the live camera core It has to be fully open source while the IP modules don't they can be out of tree. They can be closed source because vendors often don't want to release The all the knowledge they have put in creating those algorithms. We have Implementations of those in lip camera that are fully open source That's what we work on but we want to also offer the vendor the ability to have To provide close-ups implementations not that we like that, but it's exactly the same situation With the GPUs a vendor who wants to upstream DRM drivers for GPU in the kernel Losing my microphone There we go Has to provide an open source implementation of open GL a volcano in Mesa But they are free to also provide a close-up implementation in parallel if they want to so that's that's the kind of architecture we have here So IP and modules if they close on their sandbox they can only communicate with the pipeline handler there's a whole IPC system to handle that and Now that you're very familiar with the camera five minutes We're gonna dive into The bulk of the talk today. How do you add support for your new platform?  Navigating lip camera It's at the top level you have just a few a few directories. I'm not gonna enumerate all that this is more for Russians So you can check the slides offline But we do have an include directory with lots of different things there and a source directory That contains different components. I think that part is a bit more interesting We have the core and lip camera in the lip camera directory. We have Python bindings. We have Adapts what we call adaptation layers that adapt Towards existing frameworks. So we have a G shimmer element implementation. For instance we have vfold to compatibility layer that emulates video for Linux for Video for Linux native applications that you may not be able to change or recompile They may be close source and you want to still use leap camera. I'm sorry those kind of things We have an Android camera highly implementation. So for those who who don't know that If you take clip camera if it supports a platform, not only are you gonna be able to run that on? native Linux systems with applications that use it can directly But you'll be able to use plug-and-play application that you G shimmer pipeline And also work on any Android system. So you get that for free basically Really Okay, quickly going down and back to where we were That's all In this Lip camera directory the core of lip camera. That's we're gonna look at now We have a bunch of pipeline handlers for different supported platforms today There's actually one more. This is a bit of an old slide And we expanding Coverage for these I was really hoping that they could announce today on stage support for at least one brand new platform Then everybody would be excited about but that's as it's not the case So see you at the next conference where hopefully it's gonna be it's gonna be possible No spoilers And Same thing in the IPA directory with the IPA modules. We have support for different platforms there So that's what you're going to look like Let's start simple and fairly quickly This is the blog diagram of a camera pipeline on an nxp mx8m plus for a piece of hardware called the ISI So it's not an ISP. It's fairly simple You have multiple inputs from different camera sensor You have a crossbar switch in the front and you have a very short processing part line here Bit easier to read you have your image sensors outside of the chip obviously CSR to receiver and the processing pipeline just has a scaler and a color space converter more or less So can't do much but there's lots of platforms that are as simple as that and to support them easily Looking at first use case single camera. We have Added an implementation of the camera of what we call the simple pipeline handler So the simple pipeline handler is probably the most complex piece of code we have in the camera with greater picking names remember broccoli pie It's not simple for its implementation, but because it supports simple pipelines And the reason why it's complex. It's because it will do that completely automatically it will enumerate using standard kernel API is what you have in your device and will try to figure out a linear pipeline between a camera sensor and V fall to capture video node, and if it finds that pipeline, it's okay. That's a camera So that's that's all implementing internally if you're hardware is as simple as that if it doesn't contain any block that requires Device specific knowledge for the configuration Then you can use that this documentation in the source code if you want to look at it with a brief explanation of the architecture and what it does But to use it So we're looking here at the media graph of the device And What we're looking at when we want to support a single and single camera is one camera sensor connecting to see center receiver You have your crossbar switch that will be passed through and then just the short processing pipeline. So for that That's the source code of the simple pipeline handler if you want to add support for your platform It's a one line of code change Told you you had to write code. Hopefully that's gonna be manageable But you add a name that the driver exposes to use a space and that's it Cam is a common line test tool that we have it can list available cameras in the system It finds one and then from the first camera. I'm asking you to capture five frames and it captures five frames. It's that simple Actually, maybe not because it prints a warning saying oh, there's an unsupported video for Linux pixel format That I don't know about while this has been fixed since then But if your device brings a new pixel format that leap camera doesn't know about well, you may have to Add support for that. So in our list of supported formats you add you new formats at the device you point you Add that to a corresponding C++ file with description of what the format is it has a name has 24 bits But pixel here the pixel later in memory And with that don't I Skip to the next slide Okay, go back behind a keyboard this doesn't work for real really well you get rid of the warning and And you get full support for you new pixel format if you look at dual cameras Same thing the simple pipeline handler will see you have two image sensors There are two video notes at the end it will try to figure out pipelines in between And do that do that automatically So same thing it lists two cameras At the at the top I can see there was just one camera before now we have two of them capturing five frames from one camera We're trying to capture frames from the second one again, this is fixed Since I presented this last time But we didn't have support for correctly enumerating internal roots inside the crossbar switch So we had a media control API that lets you see what's happening in your device But nothing in video for Linux to handle a crossbar switch correctly So what we have done is that we have decided to extend a kind of API Very important point I said that lip camera is not about Canon development But if we have issues with the kernel while someone has to fix them So we drive the media control and v-fold to API development, but this is not a Hostile takeover the kernel will not replacing video for Linux. We are user space framework So we added support in silent camera and in the kernel for the new v-fold to subdev routing API that allows Showing what's happening inside All the all those blocks in the pipeline We added support for that in in helpers that we have in the camera and updated a simple pipeline handler to use that API and then With relatively simple changes there. I'll let you judge a few patches You can capture frames from your second camera so This is not even something you will probably have to do because now that the API is supported It is you know stream your driver would use that that works out of the box But that's the kind of experience you can expect if you want to do something that's still remain simple But it's not exactly supported today Now what's more interesting is if you have an actually complicated platform that requires a device specific pipeline handler First of all we have documentation we have a pipeline handler writers guide First step you read that It's in the leap camera source tree compare to html It's a nice document that uses an actual use case to guide you through adding support for a new platform And I'm going to try to explain that today in five easy steps So first thing I'm going to write a skeleton for pipeline handler and wire a dot to the build system Leap camera uses meson for the build system Hopefully you all like that. It's not make-based We found it much much easier to use another autoconf, but I know this is sometimes a bit of a controversy So you add to the meson options file new new pipeline handler name there you create Inside the pipeline directory a sub directory for your new pipeline handler with a meson build file We're gonna have a single source file to start with And we creating our skeleton here I think this is probably the most important piece of information and trying to convey today We have the cameras in C++ by the way, we have a class called pipeline handler We're gonna inherit from that and implement a set of operations that all pipeline handlers have to implement and Then not that many of them. That's that just all the operations that we need so we have matching configuration handling But for handling and then well, no, actually they're probably oh no, sorry stop is underneath here So starting stopping And being able to capture frame and then we have a nice macro that's very handy at the bottom to register the pipeline handler so it's really about doing this and Filling in the blanks So matching first matching if you familiar with the kernel Driver model matching elite camera is more or less the equivalent of probe in the kernel so it's the idea is to figure out which pipeline handler we can use for given piece of hardware and Instantiate that pipeline handler and create cameras More manager will media grab than the big one with all the blocks and the links otherwise will spend a whole day on that But this is a piece of hardware with the camera sensor at the top. If you don't have any camera sensor I'm not sure why in this room There's a CSR to receiver because most cameras that we deal with today us use CSI to you have an ISP Despite the fire. It's a single block. They can be Tens of dozens of processing blocks inside can be fairly complex ISP But the interface now as the outside world is that it consumes parameters that are put in memory buffers Think of that if you know about GPUs about a command stream that you sent to GPU It will output statistics that calculates on the frames And at the output of resizer you also had of the ISP. Sorry, you have two resizer blocks. You can capture two Streams with frames of different sizes at the output. That's that's the hardware we're looking at I've put in a bottom right as a reminder So the match function of the pipeline handler Will try to acquire a media controller device Among all the ones that in the kernel that match a set of criteria in this specific case the name of the driver and List of entities and expects to find so that's entirely platform specific, of course If it doesn't find anything it returns false. That's it hasn't found hardware that you can handle and leave camera will go to the next My plan handler, but if you find something there Well Then it's up to you. That's platform specific code to then start using the kernel devices that That support you ISP and all the hardware you have in your device So, you know class we have a set of objects that we are there pointer to media device that we get we fall to sub-desk before to video nodes The important part here is that leap camera provides an extensive set of helpers that you can use to write your pipeline handlers You don't have to deal with the complexities of the vehicle to API directly at least not too much It's encapsulating in classes that are still vfo to specific But that makes it much easier to deal with the API than calling the IOC TLS directly So using those You know much function not that we have found a media device. It's okay. We know we have two resizes and connected video nodes We're gonna loop over two instances Looking at the name of those entities trying to acquire those entities creating vfo to sub dev instances vfo to video node instances for the capture nodes at the output of pipeline we store that internally in in a class member And so we build basically all the things that we need and we do error checking along the way There's a missing piece. Well, maybe there's something wrong at the kernel level or it's not the hardware We can deal with so we bail out But this is really the equivalent of pro function trying to discover what we have and initialize everything Um It's the match function So we looked at the resizer going to do the same for you ISP for your CSR to receiver You can get entities by name as we see here But sometimes for other components, especially the camera sensor for instance You may not know the name of the entity because you could have different camera sensors connected to your system So instead of that with the helpers that we have you can follow the media graph and say okay I don't know the name of this blog, but I know it's connected to input zero of my SP So what's that so you follow the links and get the PCs that you need Um So we're discovering the pipeline same thing we're looking for a camera sensor An entity that exposes the function camera sensor if we don't find one. Well, we bail out again and Once we get to the camera sensor Imagine that you have a single ISP but multiple sensors, okay, and you Wouldn't be able to capture from all of them at the same time, but you can Pick one capture from that camera sensor stop the video stream capture from another one So you have multiple cameras in the system, but they share pieces of hardware This is why we introduce Another another class because your pipeline handler can in this case create multiple camera instances So we saw before how we were storing data in the pipeline handler class But if you have data that you have to store per camera Then you create a subclass of an internal Class in camera called camera private where you can store your per camera data in this case. We just have A pointer to the camera sensor and the fact that we can capture two streams. So that's That's how you split your data between the camera side, which is per camera and the pipeline handler side, which is everything If you have a single camera that can be supported in the pipeline handler The boundary between those two doesn't make too much sense anymore You can put things on one side now that doesn't matter too much But the logical separation is pipeline handler side share resources camera side things that are per camera So We create an instance of our camera data per camera We store there the pointer to our camera sensor And in the initialization function of this camera data We actually Call the init function of the sensor camera sensor again help a class in leap camera to help you deal With the complexity of vfoil 2 for camera sensors all encapsulated there And getting back to the match function while we're getting to the end We find all the pieces we need and we decide to open the devices and that opens the The device in slash devs so we can start using them for the sub devs for the vfoil 2 video note And it's then time to register the camera or multiple cameras we have found in the system Um, and so once you get to the register camera call at the very end of the match function Leap camera will know there are one multiple camera supported by this and application will be able to start using them First test once you're there There's not enough code obviously to use a camera But at least you can enumerate them and you say that there's one camera there in the system The id is a bit well, not very nice for humans, but this is a Textual id whose goal is to be stable in a system across reboot So you know that this string will be the same for the same camera Even if you reboot your system as long as obviously you don't change the hardware Or possibly the firmware if you do a firmware update in system depending on what a firmware exposes the name might change But otherwise that's a stable id not meant to be consumed by humans Um Then there was no nice name for the camera by the way as you saw just just this string That's that's not very nice. So no real human readable name if we add properties In our camera data class just taking them from the sensor helper. So I'm asking, okay I want the properties of the sensor. We're gonna store them in the camera data Just adding that one line of code will help and we'll show you. Oh, actually It's an internal front camera in the system. So that's already much nicer for the for the user So that's it for the matching then we get to the configuration part Configuration is about generating a configuration It's about validating what the user wants to do and then applying it to the device So that means that you have to fill a generate configuration Uh Function in the in the pipeline handler class. It's one of the api PCs. That's that I need Where we just create a new instance of a camera configuration and then we initialize that with default values Simplified code There's a single stream here with a fixed resolution Normally you would look at the stream roles that are given by the application application may want to say I want a stream for viewfinder I'm going to discuss on the screen and the stream to capture still images in a larger resolution And so you would take that into account to initialize and and create your configuration But this function does that and returns a configuration to the application Then that configuration object is Again a camera class that you inherit from you can you have to implement a validate operation on that You can store additional data in your class and the validate operation if you're familiar a bit with video filling except replicates slightly the The model we have there where if you Want to configure your device you're gonna ask the kernel to set some parameters and the kernel will come back to you saying Not saying no, I can't do that because then you know in the wiser You can't you you don't know what it can do instead But it will give you back something that may have been adjusted saying you wanted this exact resolution Well, I can't do that exactly. I'm going to give you something that's closed but not the same So the validate function here is the same It's going to potentially adjust what the application requests to something that the camera can produce So in the validate function You would typically iterate over in your camera configuration over all the stream configuration So I said lip camera can capture multiple streams for one camera So one camera sensor at the same time generating Two streams at potentially different resolutions different formats So you're gonna have a look at the stream configuration and see if what the user requested is possible Is it beyond the limits of the hardware? Is it that actually each of the stream would be valid independently? But together you exceed the bad the bandwidth you have in your system. So that's that's where you do that adjustment And then once the configuration has been validated The application asks lip camera to configure the camera with configure function And that's where we're gonna take the configuration that is given And then look at all the devices you have in the pipeline all the things we have discovered at much time All the thing we have opened and called v4l to help us to then Enable these able links in the graph Or take the configuration of a stream And then set the sensor format set the format on all the the blocks in the pipeline So because this pipeline is entirely device specific that's device specific code That's up to you to configure your device So we're done with the configuration. We're nearly ready to use the camera We need buffers to capture frames into Lip camera is based on a model where mostly you import buffer the api I assume that the application has buffers and imports them in lip camera telling here Here are buffers in which I want to capture frames That's the case for instance if you want to display something you may allocate buffers from your display device from your gpu So you have those buffers and you can use them with the camera But in some applications, especially in the simple case you may not have that So there's a helper. Well, it can reckon also provide you buffers So every pipeline handler have to implement one function called export frame buffers that will allocate buffers in the application Ask for that and the way it's done really is using the vfault to help us a vfault to api to allocate the buffers in the kernel And then exporting them to application So that's usually a very simple piece of code, but it's to make the laugh of applications a bit easier In a known future when we will have a unifying memory located on the next systems for media devices Something similar to android iron for instance based on dmab of heaps and a use-based library to handle that and handle all the constraints This should go away because the job of lip camera is not to allocate buffers But as long as we don't have that this is something we have to keep And then we're ready to implement the capture side starting the device starting the camera Getting the capture request from applications And well stopping the device when you don't So how is that done? Well, we have a start function again. This is about starting the hardware. So Meta graph specific to your device Code specific to your device as well. And in this case, we're going to loop over the path Has the configuration enabled each of the two output path and for each part that is enabled. Well, let's call the stream on function To enable the to start the v4 into device Queuing a request we get a function call with what we call in lip camera capture request from an application So it's basically bundling a buffer or multiple buffers and controls together And so we have to queue those buffers to the capture device Which is again the v4 to device at the end of the pipeline So that's also usually a fairly simple implementation the contour contour part of starting is stopping Nothing very complicated there either. It's fairly Small amount of code and then we're ready final test We're gonna capture frame or camera with our camera. We start the camera application It prints this and then you wait a bit And a bit more and well, you make it a cup of tea if you want to but nothing happens Why well, we've started the device, but There's no code so far that actually connects evens we may get from the kernel To the pipeline handler. We don't know when the frame is ready. We're not signaling tattoo applications So that's something we have to add to add at much time for all the V fall to video nodes. Well, we connect the buffer ready signal. That's emitted By the helper classes in the camera to a handler. That's device specific And so in our pipeline handler, we create a handler that we call buffer ready And we're completing the buffer. We're completing the capture request from the user And this is what will signal to the user that the frame has been captured And so with that code in place now, it's much better. We can actually capture frames So that's a pipeline handler sign in practice is going to be Probably slightly more complex than that. It's going to be a bit more error handling They were placeholders validating a configuration on generating one configuring the device a bit more line of code because you have more blocks, but More or less. That's that's what we're looking at Then how do we actually control the isp because that was the plumbing. That's why it's called pipeline handler You know, it's putting all the blocks together and handling the pipeline But we haven't seen and how to calculate all the parameters for that isp and how to handle all the control loop So I was talking about api modules. I said we had Nice guide to tell you how to write pipeline handlers. Well, we have a nice guide to tell you how to write api modules as well Isn't it great? Same directory compile to html and you should start by reading that Four steps only right compared to five makes it sound Much easier to write support for an isp It may not be exactly the same, but we start with what you call the ip interface So I said ip module loaded dynamically at runtime communicates with a pipeline handler Well, if you want to communicate between the two and you have to communicate device specific information those pieces of code are device specific while you need a communication protocol That's going to be device specific as well. So that's what we call the ip interface We use a system in the camera an ideal that's From chroma is actually Called mojo. So it's just a c like syntax to to express an interface And we have or here ip interface with a set of functions in it starts top configure map and map buffers q-request So this is entirely device specific There are a few functions in the interface that are required the init functions start stop I think configure map and map are required But the rest is something that is up to you depending on what you need to communicate Well, you create your functions and indicate what type of data need to be passed between the two Important point all the functions by default are synchronous There are asynchronous functions as well at runtime. So once the camera is started everything becomes asynchronous. You tell the ip okay Statistics already here the statistics, but you don't block and the ip at some point will Compute is p parameters based on that And that's the other side of the ip interface is the even interface where the api will say asynchronous as well Okay, the is p parameters already the sensor parameters already ip is isolated in a separate thread So they don't block the main pipeline handler They also isolated potentially in a separate process if there are closed source So communication can be a bit costly Do not have try to minimize the amount of events If you always generate on the api module side the is p parameters and the sensor parameters for the next frame together Well, don't have two calls Two to evens parameters ready and sensor controls available, but don't them together and pass the data together so we have an interface and Now we need to look at how to handle that in the pipeline handler Wiring up the capture of the statistics from the isp Communicating with the api configuring the isp and This is going to be because we're running out of time unfortunately We can't do that all in 40 minutes. I'm sorry to disappoint you the topic for the next talk about lip camera But Obviously if you really can't wait you can have spoilers. So I'm available the whole lip camera team is available to guide you through this I Will try probably for embedded recipes in September to have a talk about the actual api module and how to implement the algorithms and the auto exposure And the auto white balance and all those pieces But this was really the plumbing the pipeline handler side. How are we going to communicate with our api module? And we'll then see how all that is done So that was lip camera in a in a nutshell Contact information available and now we may have A couple of minutes for questions or half a minute or something like that Two minutes for questions and well it can come to me afterwards. Anyway, if you're not very hungry Any question? Yes Easy answer So thanks for the presentation. I have a question regarding the isp What about firmware like that's loaded by kernel or is it like the task also of the lip camera? So the isp firmware is not something that the camera will handle what even from a kernel point of view What we consider to be the isp interface like the device to kernel is a combination of hardware and firmware So if you have someone running on the isp the kernel driver may need to load it with a firmware api So that's a kernel task But then the the api that the firmware exposes Towards the host is what the kernel will use what lip camera will use so we don't dive into the firmware So basically it's the same as gpu Yes, exactly. Okay. Thanks another question in the back um as lip camera already capable of generating command stream for the isp Yes, well it depends a bit what you mean by coming through the platform that we support today They bundle all the isp buffers all the isp parameters in a memory buffer It's expressed because that's how those isp work as c structures Implicated c structures with hundreds of parameters So you can consider that to be a common stream But if you have an isp where instead of having a set of parameters You you have things that look more like commands. It's exactly the same thing from a lip camera point of view It's about putting those things in a buffer that a job of the api module Platform specific. So that's fully supported. Yes So thank you very much. We are out of time. Maybe find you in the hallway and ask some more questions Absolutely. Thank you very much


What's good y'all Chris from trashiescasebreaks.com doing our 14 team R&B for PYT3 of 21-22 NBA Spectra. So we're doing a few giveaways here. First up, our free spot giveaway to anyone who bought a full spot, which are just three people here. Nicholas, Chad, and Alex. Thanks again to you three. Then we have our fresh dice, our fresh list for our nine R&Bs that 10th team will go right here at the bottom below Alex's name, our R&B as well at the bottom here. For these teams, the 14 teams, Raptors, Cavaliers, Magic, Mavericks, Grizzlies, Bulls, Bucks, Nets, Knicks, Celtics, Heat, Sons, Trailblazers, and Wizards. Those 14 teams in the R&B. As you know, any Redemptions, even if they're number one-to-one on the check list, go to spot zero. Any all-active one-of-ones go to one, spots 12, go to two, 23, go to spot three, so on and so forth from one to nine. But let's get to it. Nicholas, Chad, and Alex. Thanks again, y'all. Good luck. Three and three, six times. Top spot gets that free final spot. One, two, three, four, five, last one, six. Gonna go to Chad. Chad, top spot, very nice. Congrats, Chad. Our fresh dice, fresh list, Chad. We'll do another double star here, that last spot mojo. All right, our 10 players, our 10 numbers, one to zero. This dice roll for both, five and five, 10 times. Let's do it. Good luck. One, two, three, four, five, six, seven, eight, nine, 10. Nicholas, down to Adam. And then 10 times for our numbers. One, two, three, four, five, six, seven, eight, nine, last one, 10. Good luck. Nine, down to one. Let's take a look at it together, shall we? So Nicholas Stoffel will grab the spot nine from the prison cell filler. Chad Dahl, that free spot will get spot four. Alex Lachner for the cello two gets five. Chad Dahl with three. Paul Kovac with cello two gets spot two. Raymond DeJesus from cell one gets seven. Nicholas Stoffel, that first full spot gets spot zero. All redemptions and cards numbered, ending in zero. Christopher Hoyt goes to six. Alex Chernis last spot mojo gets eight. And Adam Cuperman from prison cell two gets spot one. All right, there we go. That is the R&B for those 14 teams right here. Not 14 teams. All right, but here we go. These 14 teams. Rappers, Cavs, Magic, Mavs, Gris, Brooks, Bulls, Nets, Nicks, Celtics, Heads, Suns, Blazers, and Wizards. All right, when we come back, we'll crack open this fresh case right here, four box break of Spectra basketball 21-22. Thanks again, JeffriesCaseBreaks.com.


This is it feels we're trying to chop right now. It's got done pulling the tractor and spread her out absolute mush


on everyone Sam here with late in sports cards driven 22 tops chrome black baseball hobby 12 box case break number 28 random division style here's a look again at your random results let me get over the random results as always you can find these on the website under the results tab as well as the link in chat it's good luck here everybody let's go ahead and do it Andrew Vaughn Andrew Benintendi is a Yankee Miguel Cabrera gold mini diamonds to 50 for the Tigers we've got Dale Murphy 32 out of 50 going to the NL East NL East nice one there at least is a Marcus again guys I don't know if I should I might have showed the wrong random that's the random results right there I might have showed the action huh no no recap on these yeah so sorry about that if I did show the wrong uh screen for a second there Aaron Aspie rookie Matt Chapman here's the Andrew Benintendi green atomic to 99 for the Yankees auto is there strawberry for the NL East looks good right dude nice one there for the NL East again Marcus take a bite of it dip it in the dip dip the side no you sure bro dip the other side that I haven't eaten enough sauce and take a bite of telling you it's so good usually tops is pretty pretty quick I would say Travis it depends on the player more than anything Gavin sheets blue Salvy Perez to 75 for the Royals NL Central or AL Central and Freddie Freeman NL West to 150 purple mini diamonds green auto coming up here it's going to be for the Marcus Simeon going to the AL West 32 out of 99 green that is Jason L with the AL West all the crazy thing about it any redemption this guy packed a jaw one of one rookie autograph something and it had expired by like two months or something and he goes in the cars sold on an auction place for ten thousand dollars resultful Castro rookie that's brutal Starling Marta that's to 150 for the NL East purple mini diamonds I'd be so pissed the day that that whoever was in the Panini offices saw that expire yeah right Joe Carter that's 19 of 99 green auto for the AL East an orange still nice say a Suzuki rookie variation and green atomic Aaron Ashby 71 out of 99 for the NL Central you've got orange Mariano Rivera 25 of 25 for the AL East congrats Kyle T that's awesome nice one there last one stamped the Sandman congrats buddy awesome hit very jealous of that card yeah we'll mag that oh it's one of the best in sports if not the best there's Steven Kwan refractor rookie to 199 hit the Kwan Jerry Rice auto nice that'd be awesome you've got auto Christian Yelich for the NL Central nice one there on the base that is for Kevin H a little foam thing in here I'm gonna see the auto right away Cedric Mullins Joe Adele refractor Mike Trout to 199 for the Angels and we've got going to the AL Central Jose Ramirez 44 out of 50 on the true gold nice one there who's up there for you Debra first Cassis well just talk to him getting treated yeah yeah there's rumblings I think both will start this year at some point you might not make the opening day roster but I think he'll come up eventually Devers tell Marta Josh low to 199 for the Rays and we've got rookie Colton Welker NL West 12 out of 150 refractor auto Griefer Edward Cabrera John Carlos Stanton gold Kyle Lewis 31 out of 50 nice one there for the Mariners Ted Simmons going to the NL Central on the base auto Kevin H with the NL Central nice one there buddy there's Joe Ryan to 199 on the refractor rookie for the AL Central we've got Andrew Jones NL East nice one there base auto hopefully potentially a Hall of Famer this year maybe not this year but eventually could be if you see a uh six in twitch chat sent me a graphic on take on Instagram that if you put statistics of Mike Trout and Andrew Jones next to each other at this time in Andrew Jones's career other than like one category Jones leads them by everything Trout by everything Eddie jr hunter green rookie uh green Jonathan India 57 out of 99 for the NL Central we've got Jose Canseco going to the AL West on the base auto half of the bash brothers right there that's on that Oakland AL West again it's Jason L Peter Lanza Jose L2 back Shoei Otani to 150 on the Purple Mini Diamonds last card of the break is Kyle Tucker going to the AL West Jason L again picking up another card congrats man on card base autograph that'll do it for the break thank you guys again for the fill next up we've got XR football pick pick your teams


We are going to explain explore emotions in young learners. It is a very important and necessary to understand that how we can manage the strong emotions of the learners, young learners. We will see that we leave them on their decisions, whatever the decision is let them do or let them check their abilities and decisions whatever they have made and they got frustrated and that frustration will energize them to use their abilities. We should tolerate and we become well resistant not to do and not let them to do and they become very aggressive and reactive. So let them to participate and to get the decision and to learn from that and we help them at that situation, at that particular way, what we do not have got from the situation. So, as a facelay, they are not successful, in small decisions we can help them to let them get that decision. We relax them, that you enjoy, you express your thinking, you express your hobbies, participate in it, execute it, interest showcase or family, friends, gender so that they can express their feelings. They will get reflections from their friends and fellows and they will feel it. They will energize their self or they will get feedback and they are well self-aware or self-awareness and that is leading towards the success of their emotional management. This is the way we see some physical signs that we are seeing, which will develop emotions. Before going towards the bad things, we know that the things are not going to be good, so we can control that situation or change the scenario of the situation. So, we should keep the children aware that these are the physical signs which are leading towards the problematic situation. So, in such a situation, we can see different kinds of behavior, that people do not feel good about it, they do not feel good about it, they do not feel good about the reaction. This means that in their reaction, their aggression can come in front of them, they can be upset and we should first take some steps to control that situation. That sometime the teacher is expressing behavior while noting down the tasks, not showing good behavior, this means that we do not have any interest in our work, so we should concentrate on our own interests, we should eliminate the bias of anger, that is, it should be self-managed or it should be the anger of our elders, or it should be the anger of our parents, when they return home or do something like that. So, they get the expression that they are not happy and they are not comfortable with the behavior. So, we should keep in mind that we do manage it early. In this, there is also a situation in which we think with the children, listen to them, share with them, why it happens so. What do you feel in such a situation? What should you do? And then there is this thing that makes you angry, what is that? What is the situation that you do not like or do not like? It says that at that time I do not like when my words are not accepted, when I am right and when I am being told that you are not speaking right, you are speaking absolutely wrong and if you speak like this, then I flare up and I have a special emotion or anger or something like that. That is very harmful. So, from its expression, we get to know its understanding, its nature of strong emotions and we can manage it. And similarly, before we take any action like this, we have to wait for it to take action. So, we should then give it some direction or before that, we should take some such actions that the situation does not go to waste. And especially for children, they got angry when they are not getting of their own choice of situation, of play. They are not able to see what their meaning is. Or the other group is waiting for aggression. It is better to manage it before the time comes. That is why, especially for young children, we have to manage their behavior. So, we have to be very careful. And when such a situation develops, we can manage it. And for the young learners to control the situation, we can help them. We can give them an opportunity to express themselves. We can encourage them with reality. We can highlight their strengths. And we can appreciate them. Actually, they do not have any acceptability. Whatever they are thinking about, they are expressing about. Nobody is listening. Nobody is concentrating on their good behaviors. Nobody is ready to accept that sort of good behavior. That is very useful. Thank you very much for being a good listener.


Hey y'all, it's Chris and Tammy in the Colored Valley Cook Kitchen and I am frying up some pork tenderloin for supper. It's a super easy supper. But I told Chris, we haven't fried this for you guys in a long time because we used to get it all the time at home and now we don't get it as much. I'm putting together a simple supper. I am just opening a can of peas. And I know a lot of y'all like frozen peas, but I'm gonna be honest with you, I don't. I like them out of the can. And I like to put just a little butter in them and that's all I put in my peas. And I usually get the baby peas, the smaller one. All right, so all I do is heat them up and eat them. Now for this corn, we're going to put it in the air fryer and I am just going to spray it with some olive oil spray so it don't dry out too much. I'm gonna stay back here because if you spray the olive oil spray, it'll get on the screen. Oh, I was wondering what Chris would do when I saw Lord of Mercy. Yeah, you don't want olive oil on your camera screen. No, okay, now you can show the corn. So I already brushed it, washed it, and you got most of the silks off of it. And we're just gonna put it in here for a few minutes. It shouldn't take it long. I think I'm gonna put it on the steak setting. 400 at six minutes and I'll do it good. Now for the cube steak, I always, you can come on this side of me now, baby. And I'll just move this out of the way. So we're gonna crack an egg right here for the cube steak and I'll let Chris show you on the package at the grocery store. It was called lean pork cube steaks. This is cube steak made out of pork, not beef. And so we used to eat it a lot. And it's actually, I like it better than the beef. Now today, my recipe tells you to use two eggs, but because eggs are so expensive, we're getting by with one. So I just beat up an egg. Now, when I do the cube steak, this isn't our first cookbook, this recipe. When I do my cube steak, I actually pull it apart because it's usually like laying down on top of itself and stuff. So I typically just pull it apart in smaller pieces like this. And that way, if we have leftover, plus it gets crunchier and I like it that way. And that way, if we have leftovers, they're good on biscuits, okay? You could always put this up and then fried up and then put it on a biscuit the next morning. And if you've got an air fryer, just lay it in the air fryer and let it heat up some. Do you think that's more tender than the beef cube steak or is it just because how they did it at the store? I mean, it's just according to who's doing it. But yes, I think lots of times when they do cube steak, it's round steak. And sometimes it has a lot of the tendon, not just the fat streaks, but the tendon, which is stretchy and chewy. And they beat it up in the cube steak where as when they're doing pork, it's just plain-o pork tenderloin. And so it doesn't have as much of that in it. So I think that's one reason it seems to taste a lot better. Now I like to season it before I put it in the egg. So I've got to rinse my hands off so I can reach in my salt boxes. Yeah, if you like cube steak, you may like this even better. It's really good. Do you know what this pan we're using today was sent to us from a viewer? And well, he's actually, he makes these skillets, okay? And I've shown it to you all one time before, but I've never cooked on it. It's made out of carbon steel, which is supposed to be the very best thing you can cook on, okay? So he makes some handmade and to tell you the truth, I'm gonna have to look his name up because I didn't look it up before we started. And so I'll look up his name and you guys can, we're gonna use some steak and chopped, salt, pepper, and steak and chopped, but you guys can know who he is if you wanna go take a look at him. They're expensive because they're, you know, made in-house or whatever and forged. So I just will share it with you. Chris is gonna show you my treat that somebody sent and while he does that, maybe I can look up the name of this pan for y'all. Now I'm just taking my keepsake now and putting it in the egg. Chris, won't you do me a favor and put some flour in here for me? Okay. We're gonna use our white, lily, self-rising flour and Chris is gonna put some in it. There's no sense in me going to wash my hands when they're gonna be dirty in just a second anyway. In here. Oh. Put about two of them. And now we're just going to bread it. And I usually bread all of it before I start cooking it. Good stuff. It is good. We hadn't had it in a while so it will be a delicious treat. And this was about $5.39 and there's plenty of meat. We all eat too much meat anyway and this was plenty of meat. It's enough that we could have ate it twice. Easy. We used to get it at the Engels in Dallas and we haven't seen it down here and she started seeing it at the Publix. So she got some. The Engels always had it. We ate this about once a week, wouldn't we? Yes. We ate it a lot. The kids loved it. It's fast. A fast way to do supper. And really, if you're having sides like we're having tonight that only takes a few minutes, I'm just warming some peas and making corn that only takes about six minutes. And it's not going to take this but a couple of minutes aside to fry up because it's thin or at the most three minutes or so. So I'm going to take it and put all of this flour and we're going to start dropping it. We're going to put some oil in our skillet right quick and Chris might have to do that for me. Well, I guess I can. Can you do it? Yeah. Yeah, these are, this is a very nice. It is nice. And till I say, whoa, whoa, whoa. Okay. All right. That's corn oil. People always ask us what kind of oil we're using. Anytime we're using a lot of oil, it's corn oil. I would never put that much olive oil in the skillet because it costs too much. Okay. Get me over here. No, you're perfect. Says he just poured that in there even if this thing has been preheating. I am going to wait a sec. I've never got to fry anything in this. I have no idea what's going to happen. So if it sticks, I had it preheated. Yeah. It's an experiment. Yes. We've had this thing for a long time. Yes. And I just haven't pulled it out and used it.  It's gonna take it longer. I don't really have a lot of times that I would use it unless I'm frying something like this. So it looks like it's working good. Yeah, it sure does. Hey, I don't see if it's any bit brown at all. No. No? You want it to be toasty? Oh, it don't matter as long as it's done. What do you say?  Okay. I'm gonna put it on six more minutes. Stay, again. And you go out there and show them a tree and talk about it. And I actually showed that the leaves today and we have a tree that I received it. It's a huge, huge one. You said it's a fig tree? It's a fig tree. It's pretty. You put it in this pot. Probably needs a bigger pot. Oh, man. I think that's about the right size. It looks real pretty in the window. Fig tree. What do you think, Soda? You like figs? All right. Let's see. It's frying up. It looks like it's frying pretty evenly, Tammy. I mean, that is supposed to be the best stuff out. Yeah, it's supposed to be. You're looking at that guy's name. Yes. Okay. I steal it and he sends me an email first. And I said, sure. Now, they're under the direction of Ryan Sandin. Ryan, R-Y-A-N, Sandin, S-A-N, D-E-K-E-N. And his company name is Stage Ford, no, Stage Coat Ford, S-T-A-G-E, C-O-A-C-H, and then Ford, F-O-R-G-E. So I'll put a link on here for you. And they're handmade and they're super nice. They're beautiful. Pants. Now, I didn't start the timer, baby, but that was on six minutes. Correct. So these are priming in here. Clutch to three minutes. Clutch. Doing good. And if y'all look at these, you know that what's to say in skill labor ain't cheap. Oh, yes. Cheap labor ain't skill. Good. People that made this made it by hand. He made it by hand. He gave it to us. It's beautiful. Look at the handle on it. It's just gorgeous.   We're glad to have you. And we're thankful for it. And really, I'm gonna start cooking with it more. I'm gonna see how it does with a lot of different things. So I appreciate it, Ryan. And it's a beautiful skillet. And so he can't compete with those huge companies that make thousands and thousands of skillets. You know, so don't expect it to be cheap. But I can tell you one thing. You don't expect it to cook this. Because it looks like it's doing a good job. I've always wanted the carbon steel wok. And I'm sure I could cook in this with my Chinese food. It's a real good thing. Yeah, it looks good. Or I'm gonna set the timer this time. Look in these three minutes per side. And I did turn it up just a little bit. So you showed them the tree. I did. It's a beautiful tree. Yeah, the kids just love this. I mean, this is... I can bet it's a cute steak. I know a lot of y'all don't eat pork, but we sure love it. I like cute steaks. I know, Chris really likes the cute steak more than I do. But I think because my mother made it all the time, I'm just not crazy about it. And I love the way this tastes more. Looking good. Looking good. So this is gonna be a simple, missile supper. And we started it right at six o'clock. And it's gonna be done by... The first batch will be done by 6.15, I'm sure. Talk about a quick dinner. Super quick. And we really haven't made much of the man-seater, have we, Dave? Nope. I haven't. Nope? I haven't messed up anything. So, I'm gonna put this back and we'll get a salad plate. Y'all, let's see how our pork looks. So it's ready. I'm just gonna put it back in there and close it up. It's ready. Look, pretty. Beautiful. Beautiful color. I'm gonna let that one get a little brown on that side.  Well, I got some bigger ones too. You can turn that timer off for me. We don't turn it off, it's just gonna keep popping, see, it's driving us crazy. Get the tip good and hot before it picks up my thing since I had that other on it. I'm gonna put this on the table and we try to take a good look at it, how pretty it is, okay? Good stuff. You've never had it. You really need to try it. So what I'm gonna do while this is frying, is I'm gonna make a plate, give it a taste. You could always make some gravy. I'm sure this pan would make some good gravy. Do you want me to make gravy for us? No, we don't really need to eat gravy. We don't really need to eat gravy. Y'all, I make gravy all the time. If you wanna see how I make my gravy, you can just look it up. But man, this pan's gonna have some good tripping sitting in for gravy. But we're plenty healthy, trust me. So anyway, we're gonna make the plate real quick. So it's waiting on the plate down there. Because me and Chris can go ahead and eat while this other finishes up cooking. If we didn't put enough salt and pepper on that corn, did we? Well, no, not yet.  Always butter the corn. I'll get it in there. Peace on the plate. And the beautiful meat. Now, I like to butter the corn and I just use my hands usually and do it. Let me show you how I do it. Cause this is for real how I do it. I just take it and I use my hand. And of course, you could have used some herb butter while it's in that cooker instead of the olive oil if you wanted to. But this is just regular old supper. It's so funny cause when we come in here, y'all want us to always have bread and gravy. And like the other night, we were having fish and y'all wanted us to have hush puppies. We eat fish a lot. So of course, I'm sure when your mother makes fish, you probably make hush puppies, but I don't know that your mother made fish once or twice a week like we do. So I don't make hush puppies every time. So let's put some of this on the plate. Come on around here, Chris. So they can see our beautiful fried up steak. Ain't it pretty? And then we're gonna give it a try. Good. So I'm gonna flip this, and then we're gonna give it a good taste for y'all. So I'm timing it three minutes aside. I'll go ahead and turn the timer on three minutes again.  The second time. You can get all that stuff on the bottom of the pan. Yeah, after you flip it the next time. Yeah. All right, it's doing really good, Brian. Awesome job. All right, let's give it a taste. I'm gonna try this golden paste right here. It's so pretty and golden. Looks good on the inside. I know it's good because I made it. So delicious, y'all. And it's tender. I mean, you saw some doors fall. Very tender. Yeah, or their hands, yeah. Yes, and y'all know I got the steak tooth in, so. I can chew it without any problem, which is a good thing. I hope y'all enjoyed watching tonight's live supper, making our pork tenderloin. And we thank you for our beautiful skillet. It's doing a fabulous job. Wonderfully crunchy, a beautiful color, and I am very pleased. So we will see you next time on Colored Valley Cooks. Hopefully bringing y'all red beans and rice with some good ol' swaggered sausage in it. Gonna be good. I'm soaking the beans right now. They're on the stove already. I'll show them to you and then we'll go. So we gotta have red beans and rice, but you need to soak your beans overnight. So I brought these to a boil today and I didn't put anything in them. And then I've covered them. I can show you how they look. So I brought them to a boil and they're dissing and they're soaking. So tomorrow we are gonna make some delicious red beans and rice. We'll see you then. Well, I don't know if y'all see it tomorrow. Probably. Some day. Sometime, I'm not sure when I'll post it. I'm not posting as often, slowing down a little bit. So look forward to that one. Love ya.


nine people were killed. 27 others injured. At least 15 people are dead. You can see the chaos that rang out. The gunman being confirmed among the three dead and the 12 injured. I'm Brian May. The numbers are hard to read. July 28th, Gilroy Garlic Festival four dead, 13 injured. Five days later, August 3rd, El Paso, Texas in a shopping center, 22 dead, 24 injured. Less than 14 hours later in a historic district in Dayton, Ohio, 10 dead, 27 injured. Three mass shootings in less than a week. It's enough to make any of us ask the question, how safe are we when we go to a large public place? We talked about this topic back in 2017, but in light of recent events, we thought it was time to revisit the subject. With more on that, here's Sean Boyd. It is quiet and it is dark here at Golden One. But don't let that fool you because security is always watching 24 seven, especially during games and events. In fact, there's more than meets the eye when it comes to spectator safety. How about that shot by Ben Macklemore? The new Golden One center in downtown Sacramento is the NBA's newest premier arena. A sellout game crowd of more than 17,000. 19,000 for concerts like its first, Paul McCartney. But long before the venue opened and crowds filled seats, safety was a priority. So we're here at Golden One Center's Mission Control. Sergeant Bryce Heinlein is one of several officers from the Sacramento PD who can be stationed in the nerve center at the arena. It's part of Golden One Center's Experience Center. Police, fire, security, and other important department staff fill this room every time there's a game or event. It's really about collaboration and making sure everybody's on the same page about what is going on at the arena at any specific time. They monitor everything in here from the sidewalks and traffic outside to the seats and foot traffic inside. It looks like we have social media pulled up here as well. Yes, social media posts about the event going on are treated as valuable intel. We're constantly monitoring social media fees to see what the top topics are or to see what's trending. It's just an information gathering spot for us to be able to get information and disseminate. And since they're all in the same room, they can share any of it instantly and accurately with each other should an incident happen. Conceptually, it's like the Cal OES State Operations Center, but on a much smaller scale. Entertainment venues are a safety focus at Cal OES through our large stadium initiative. After all, California has 39 million residents and is now the fifth largest economy in the world. We're a desirable target. As the state's top cop, Cal OES law enforcement chief Mark Payzen made sure Cal OES was involved in safety planning for Golden One Center. As well as Levi Stadium and Super Bowl 50. The recent violence in Manchester accentuates that need. That level of violence has been risen, which again, necessitates that we rise to that level of vigilance and preparedness. But with all the planning, all the cooperation and technology, safe public events can always use your help. Remember, if you see something, say something. We encourage the public to come to us, engage us in conversation. We rely on our visitors here or our community to bring things to our attention and to work together to make it a safe environment. And here's a nice lap and a finish by Willie Cali-Stine. Quick factoid for you, get this, there are more than 700 television monitors in this entire arena, many of which are devoted to your safety.  Even with police and law enforcement working around the clock to keep you safe, they still need your help. With more on that, here's Monica Vargas in another story we first showed you in 2017. Hey, thanks Brian. Whether you're at the NBA Finals or your local Friday night football game, it's important for you to stay alert and know what to do if something just doesn't feel right. The U.S. Department of Homeland Security's See Something, Say Something campaign wants to educate you on what you can do to help keep your community safe. This campaign also has a ton of resources available that you can share with your friends, family and your community, just like this simple but powerful PSA. I pay attention for a living. I watch plays and make important calls. While I'm busy watching a game, I need your help in keeping an eye on the stands. We all play a role in protecting our communities. If you see something suspicious, make the right call. Tell a law enforcement official. So, it's really important that you pay attention to your surroundings. If you see something or someone's behavior that seems suspicious, don't keep it to yourself. Contact your local law enforcement. That activity may be completely innocent, but we'll leave that to law enforcement to determine. And remember, if it's an emergency, call 911. A good reminder that public safety is everyone's responsibility. If you see something, say something and report it immediately. For all of us at Cal OES, I'm Brian May. Thanks for watching.


Hi everyone, Joe for jaspyscasebrakes.com coming at you with 2019-2020 Panini Mosaic Basketball Fast Break Edition. Three box, pick your team number one. All card shipped in the Mosaic, of course. So some pretty nice stuff here. Pelicans are being given away in this break. One team equals one entry. So if you bought at least one team, you have a chance at the Pels. Yes, if you purchased the cheapest team, you could get the most expensive team. All right, I think what else is here? I think we've got like disco parallels in this, which is I think unique to Fast Break. So all sorts of fun stuff. Big thanks to all of these folks for getting into the action, really appreciate it. So let's grab everybody's names, put them into this blank list right here. We can remove that Pelicans placeholder spot. And name on top after six, four and a two, six times name on top after six gets the Pelicans. One, two, three, four, and sixth and final time. After six, thanks everyone for getting in and congrats to Serenity. There you go, Serenity. After six, you have the Pels. There you go. Yo, ladies and gentlemen, should be a pretty quick little three box break right here. Appreciate everybody getting into the action. Thank you. All right, so there it is. Fast Break, one auto per box on average. I think this should be about 15 minute break, five, 10, 15, something like that. I don't know, 15, 20 minutes. And remember all cards ship so if I happen to miss something, a variation or a numbered card or something like that, don't worry about it, everything will ship. All right, so what do we need here? Derek has the calves looking for the LeBron MVP card. That's a good, that's a good chase. I know Balraj was here looking for Luca Donchiches. He's got the Dallas Mavericks. Rich Schmidt looking for some big Seiku Damboyas. And John Samson looking for some Hachimuras, Rui Hachimuras. All right, good luck to you guys and all. A little bit of color right there. Okay, let's see, let's see what we can get. All right, good luck. This is pick your team one. Pick your team two. We'll be going off a little bit later tonight. All right, there's Terrence Ross, 50 out of 50. Purple Disco, that'll be for the Orlando Magic. That goes to Mike Lyons. There's an NBA debut Hachimura. And there's a blue chips Kobe White. For those parallels, there's LeBron James. And Kendrick Nunn looks like the Disco Mosaic right here. For the Heat, David Strauss with Miami. Lakers LeBron going to Adam Kelly. And those all be top loaded before they go out, of course. Hall of Fame, Marovitch. We guys were talking about Kai Bowman in the chat a little bit earlier, MVP's. Yannis Antodicompo, West Matthew Silver. Derek E saying rumor has it that Zion NBA debut follows a Rui Hachimura base. And Zion base follows Dominique Hall of Fame cards in Mosaic. Not sure if Fast Break is the same. Fast Break might be configured a little differently because we're adding these little Disco parallels, but I don't know, we'll see. Jabari Parker, blue for the Nets. That'll be for Jeremy Tillman, 67 out of, oh I said Nets, I just looked at the uniform. It's Hawks all over the place. There's your MVPs, LeBron James for Derek and the Cavs. Saw black and white uniform and I was like, yeah, Nets. So there's the Rui base, John Collins after that. There's the NBA debut, Zion. So I guess it is, it's close enough. It's pretty close though. Not directly afterwards, but soon afterwards. We got the Fast Break autograph, Mifondou. Cabanelli, Cabanelli, Cabanelli, Caban-Gale, Michael Lyons with the Clip Show. Dominique Wilkins, Hall of Fame, and after that should be a Zion base. There it is, a Zion base. That's probably the same pack. Maybe that's the pattern, not the very next card but the same pack, that's probably the same pack. Eight cards per pack, it's close enough. All right, well, take that knowledge from Derek, E, and spread and go impress people and go impress people at the bar tonight. I guess some of you can't go out there. Now that doesn't mean you can't, but the other way is not, like you guys, I'm trying to spit this out, but that doesn't mean though that theory or I guess which worked here. If there's no Hachimura base, there still could be a Zion, right? Zion debut. There could be no Dominique Wilkins Hall of Fame card, but there still could be a Zion base, right? I don't know if I explained that, but I guess I'm asking, Zions can be pulled independently of the Dominique Wilkins without Dominique Wilkins being pulled. If a tree falls, yeah, if a tree falls in a forest and no one's there to hear it, does it make a sound, right? Kelly Olnick, 85. Political science, but same thing, close enough. A lot of philosophy involved there too. RJ Barrett, MBA debut. John Morant, Matthew Shearer with the gris. If a bear craps in the wood, does it smell? Rich Schmitz asking. If there's no one there to smell it, what is the definition of smell? There's Tyler Hero, disco parallel. No one's there to smell it, can there be a smell? Maybe the bear smells it, so I guess maybe it does count. MBA debut, disco, Zion Williamson. There you go, no Hachimura in this case, but there you go. Was there serenity with the pelicans? Unless there was, there was not. Oh, I missed that LeBron James though. Two out of 50 purple LeBron James for the purple and gold. That'll be my Lakers, Adam Kelly. That probably goes for like $600, right? And matches the color of the team. There's Bowl Bowl, fast break autograph for the Nuggets, Daniel Smith. There's the Hachimura, it was kind of the other way around, but there's the disco Hachimura for John Samuels when they picked up the wizard straight up. There's another LeBron James MVP's card. No parallel, Derek, but obviously anything LeBron really adds up. Another Hachimura, just a base Hachimura. But all those will add up too. There's the Luca Donchich base, there's an RJ Barrett blue, there's a Zion Williamson debut, all sorts of things happening here. There's the Hachimura and then the Zion again. PNW says, have a tree falls in the woods while a bear craps, is my wife's still gonna complain that it didn't load the dishwasher right? Yes. Tony Koo coach, Garland, Dominique Wilkins. Although check your owner's manual, you'd be surprised if you check the owner's manual of your dishwasher. Everyone may have been doing their own. It all depends on your machine and how it, how it distributes water. So for your, what's it called? For your dishwasher, just down the usually most manufacturers have the owner's manual available as a PDF on their side. Go look at it. Everyone might have been doing it wrong.  So obviously the dishwasher in my apartment or my new house must be this, must be the same way. It's not, ladies and gentlemen. Dishwashers spray at different ways. The cycles can run differently. Sometimes top racks are optimized for something. Sometimes the bottom racks are optimized for something else. Just look it up. It's worth, it's worth looking it up. That's right, Michael Hughes. Case breaks, Zion's, Purple of Ron James's and some domestic knowledge. We do a little bit of everything here at Jasties. A lot of information. I am not part of Big Dishwasher, Sean Corbett. Although follow the money. P&W's dishwasher is his children. All right. I got Daniel Tice to 50. That goes to the Celtics. That'll be for Alex Donnelly. Michael J says he goes old school. He still washes by hand. You know what? Kind of do both. Might be a waste of water, but I kind of do both. I missed, I flashed by a disco garland.  If I missed it, it'll go rookie discos. Obviously pretty nice. Cavs, Derek. With that one, there you go. Derek, good eye. I mean, wow. NBA debut disco, Zion Williamson. I've heard of him. That goes to Serenity and the Pelicans. What a great break for Serenity. Lucas Samanich to 85. LeBron James, MVPs. Seth Curry, disco. I know, Serenity, she bought their Blazers. Then she got randomized the Pelicans and then Jackpot. Break number two is coming up in a little bit later tonight. There you go. Hachimura, Zion, NBA debut. Roasting vegetables, just as healthy as steaming vegetables. I'd rather roast my veggies than steamed veggies. Redemption. There's Dominique Wilkins. There's base Zion. So I guess that theory that Derek heard about and shared with us is holding true. And a disco Hachimura for John Samuelson. Let's save a seiku for Rich, another one. I wish there was variation to save for you. And there's the Hachimura, NBA debut. Another one for John Samuelson. What a break. Redemption, bang. Charles Barkley. Card number four. What addition of Charles Barkley is this? To the checklist, groupbreakchecklist.com. Basketball, mosaic, fastbreakgroupbreakchecklist coming soon. It's gotta be the same, right? Cardboardconnection.com. Set checklist. Oh wait, hold on. Do we have a fastbreak checklist? Is it on the same page? I actually don't know where this is on the checklist. To paniniamerica.net. There it is. Autographs, fastbreak. Charles Barkley, Rockets, it's card number four. Rockets, that'll go to Jeremy Tillman and the Rockets. Nice, and a free top loader too. There you have it, ladies and gentlemen. Lot of nice cards out of this mosaic, basketball, three box, fastbreak edition. Chance to win the Pelicans and in this case, that's a huge card right there too. Pelicans definitely had a very excellent break. Thanks for watching. Thanks for breaking with us, everybody. Pick your team too, coming up a little bit later tonight. Jaspy'scasebreaks.com, bye-bye.


Hey everybody, this is Brian and in this episode we're gonna talk about Q objects and well you cannot copy them There's a reason for it. Let's go ahead and demonstrate super quick right click add new and we're gonna make a class And I'm just whipping through this at light speed Cat we're gonna make a custom Q object here It's going to be a Q object with our Q object macro. It's gonna give us you guessed it what we're gonna be adding Yeah, let's go ahead and add that in Okay, so far so good seems super simple now We've got this cat class and we can do some really awesome things with our cat class So let's go ahead and try and do awesome things with it. So I'm gonna say include cat and Then let's go ahead and make a function And this is where a lot of newbies get super super frustrated right off the bat with Q But there's a reason for this. So we've got our cat and let's go ahead and Say we want to make an instance of cat. Let's call this kitty and Then we're gonna go ahead and just test with our kitty Usually they do something like this and then oh wait what I'm just This makes no sense. I'm just making an instance of a class and I'm putting it over. Why won't this work? Well, that's what we're gonna dive into in this video from a newbies perspective This is super frustrating. You're used to just copying things away to your little hearts content But you see when I mouse over here, it says Q disable copy class disables use of copy constructor What is this Q disable copy? Well, if I go down here then mouse over this you see we have some issues and Following it down it goes into Q object So we're inheriting Q object and that's what's going on something inside of Q object is Doing this Q object has been explicitly marked deleted here and it gives us a little link this I absolutely love this I click this and it takes us right into the code Q disable copy. This is the macro that's causing all this heartburn This is keeping us from copying our object in memory And if I right-click this and I go to follow symbol under cursor or press F2 Takes me right to the code that's doing this so I can go. Oh, this is what's going on You guessed it Copy constructors have been deleted and there's also a Q disable move and disable move or disable copy move, which means We cannot copy this and we cannot move it It is basically permanently at that memory location and there's a specific reason why we're gonna talk about in the next section But I wanted to highlight two distinct things first you can jump right into the source of Qt and This is what's causing it this Mac or right here, which is baked right into Q object, which is in the Q global dot H It's part of Qt For some of us old-school programmers. This is a little hard to swallow I mean I copy things all day long and I never have a problem. What makes Q object so Special that I'm not allowed to copy it. How dare Qt keep me from copying my objects I am the ruler over all of my code It makes no sense until you really understand that Q object is a very complex object and Copying it could have disastrous consequences. So let's go ahead and jump in here And let's simplify this we have a switch and a light and we want to make a signal slot So when we flip the switch on the light goes on we flip the switch off the light goes off You notice these are two different memory addresses because they're two different objects We then take this light and we go to throw it into a function that's going to copy it But we've got the signal slot set up Something like this is going to happen Where C++ is going to copy every aspect of that into a completely new object At a new memory address Now you have a switch that is controlling two different lights and we didn't mean for that to happen and That could have disastrous consequences, especially in very large complex applications And it becomes a nightmare for Qt to track on the back end code and it makes it even worse if you were to Take this guy and copy him Because now what's going on is you've got this Like this While you have two switches each switch is controlling two lights and they're all at different memory locations And you don't know which one was which That could be very bad that could be disastrous if you tried to do this Now There are ways around this, but I wanted to drive a fundamental concept home when we talk about Q objects I'm going to toggle comment selection You notice how 99% of the time when we print something out we can say Q info I will just print out the class. So in this case, I'm going to print out our kitty And let's go ahead and say the address of Save and run and what is it going to spit out? The memory address so it's going to give us the type and the memory address because when it comes to Q object Qt has said Every Q object must be unique to avoid that problem we just discussed And what defines its uniqueness is its memory location There are ways around certain things, but they you'll have disastrous consequences don't even try to fight it And this is the main reason why you're going to end up in this nightmare scenario where signals and slots start going berserk And everything starts going crazy in the background and it gets even worse if you try to delete this thing later on If you know c++ the answer to this is pretty obvious how you get around this is simply don't copy the object And let's go ahead and demonstrate here.  I'm going to Use the address of And I'm going to say test to My preferred method and you'll see this used heavily in Qt is pointers So you're just simply in a point to the object makes it super ridiculously simple Then you just avoid that whole thing. Let's go ahead and grab this Let's go ahead and say cat And cat now If I try to use it up here, you notice how it's still going to say invalid Binary expression. This is why I almost Always use a pointer simply because I don't have to mess around with that every time I Q info something out So now we can just you guessed it And we can purify these things a little bit here. So I'm gonna say ETR And through the magic of copy and paste Absolutely love copy and paste probably best invention ever Go ahead and give that the address and voila. It just works. It's super ridiculously simple So you can see it is the exact same memory location because we're just passing you guessed it the address of and the pointer to it Or in this case actually the address of now one other little thing I want to do is let's say you have multiple cats And let's call this I need a good one. Hmm What do I want to call my cat? Hmm Let's call him death because cats just seem to kill everything. I swear they do How do you differentiate these two? So for example, let's say I do Something like this Pats are really nature's murder machines. I swear they are it's a bit morbid forgive me But they really do just annihilate everything So save run How do you really differentiate? I mean we've just got memory addresses and we can see the memory addresses are different But it doesn't really help us Well, that's where object name really comes into play and you'll see me do things like this some say kitty set object name and then Let's call death here. Let's get death like a better prettier name and let's say the grim reaper Because why not that cat just annihilates every insect that it sees And let's go ahead save run and you'll see what cute does whenever you queue info something out Is it actually has the object name right in there? So you can really differentiate between the objects rather than the memory address I wanted to include this though because the object name Does not have to be unique. Let's go ahead and demonstrate that. So I'm going to take death incarnate here and I'm going to say It is kitty Notice there are two different objects, but I've set the same name. It's going to save run. This will not keep us from doing this and it gets very confusing So the major takeaway here is the memory address really defines the object and not the name So if you're gonna do things like this, hmm, be very careful You're gonna want to set the object name to something unique, but it's up to you to track that uniqueness because cute is once again Using the memory address to track the uniqueness of that object I hope you enjoyed this video. You can find the source code out on github.com If you need additional help myself and thousands of other developers are hanging out in the void realms facebook group This is a large group with lots of developers and we talk about everything technology related not just the technology that you just watched And if you want official training, I do develop courses out on udemy.com This is official classroom style training if you go out there and the course you're looking for is just simply not there Drop me a note. I'm either working on it or I will actually develop it I will put a link down below for all three of those and as always Help me help you smash that like and subscribe button The more popular these videos become the more I'll create and publish out on youtube. Thank you for watching


Anyone else look at restaurants and feel that something just ain't right? Hey there and jrew22.com here with another kind of random topic vlog and today It sort of has to do with the crisis that's going on But it has more to do with the restaurants that we drive by I see a lot of these Restaurants some are local some are chains and they've all rushed to put these makeshift temporary tents outside with seeding and all this other Stuff, you know, they're doing whatever they can to get customers to feel safe and not scared at these Places and it sort of feels like a two-bit wedding, you know, like it just doesn't feel right He kind of like it said I get the sense of desperation They they'll do anything to get people to come in and I'm scared to think of what's next but take a look this photo I have in the background here is the I hop over in Phillipsburg the Phillipsburg area. It's not real Phillipsburg.  They don't just have like I don't know it just Why would I want to eat there? It's like diesel fumes on the highway and dust and am I do I need? Pancakes that badly to sit out in this weird parking lot It's horrible. I I don't know why anybody would do that. I guess some people Just look to mix things up and just want to get out of the house and have someone cook food for them So they don't have to wash a couple dishes or be brave enough to cook anything But we didn't we haven't eaten out in restaurants in a long time. It's it's just not worth it You know, you shouldn't make eating out at restaurants your life It's not a good path to go down, but it just feels like I feel like we're in the twilight zone I don't know how long these is this a last-ditch effort to stay alive or are they just going to vanish after this? Failed attempt or is it just just enough to bridge the gap between when we get back to normal? I don't know. What do you think? If you like this video hit the subscribe button all these other things I have all sorts of playlist 400 videos three videos a week. See you next video


Hi everyone. I have a very exciting vlog for you. I have a parcel, I know. So today's vlog is all about nurses feet and shoewear because this is such a common question that I get asked all the time. What type of shoes should I buy? What's going to be the best for my feet as a nurse? 12 hours on my feet all day. Well, I've got something new for you today guys. So I have teamed up with the guys over at Toftalinn. I still have no idea how to say the word but these guys here at Toftalinn have given me some shoes to do a review on and yeah let you all know how that they are because as you know if you're already a nurse in your healthcare it's really hard to find the right pair of shoes but these guys have teamed up with Salford University. They've done a study on footwear and how to optimize the right shoe for a nurse and I think that's amazing. So yeah all the details of course are going to be below in the details. Have a look at the website things like that but let's get started. Also not only do they provide footwear in a range of different sizes and colors. You can have white, you can have black, you can have a mixture of white and black but they also do a few sets of insoles as well because they realize that not everyone has the same foot so you get a choice of insoles for your footwear which I think I haven't seen that anywhere so I'm loving this already. I haven't even opened the box so let's get to it. It's come out the other end but this is the box guys and these are my shoes oh my god it's like a ready meal. Ready shoes in 10 minutes. Yeah so this is the box. This is all the information on the back of the box if you can see that I hope so. Right so I know this is exciting guys this is like Christmas okay how do I get, oh here we go. This oh my god like you guys have seen these before me. Where are they? Oh here's some insoles so this is set one of the insoles. This is set two of the insoles and there is a little guide as well to what insole you should have for your feet. Fabulous how to choose your insole. Research at the University of Southwood showed that contact made between the bottom of our feet and the inside of our shoe is a game changer. Dun dun dun. This is why this range offers you the choice of three removable insoles wow. So here we go if you've got a low arch I was even got little pictures here. Low arch medium arch high arch might probably medium I reckon so how do you prefer your shoe to feel under the arch of your foot? Soft material less support medium firmness with some support or firm material with more support so you either have the soft insole medium insole or the firm insole and it says on here look soft and I'm assuming inside they are medium let's have a look medium yes okay so this is the shoe as we know in nursing shoes are ugly shoes are always going to be ugly yes these are very much black these are a six and a half because I am a perfect six and a half so I'm hoping these fit me but think what I might do is try each insole for my feet do you think that would be a good idea on each shift and then I can tell you but yes this is the shoe unisex so it doesn't matter whether you're male female non-gender gender fluid I think these shoes are just as good for everybody so what I'm going to do is I'm just going to put my trousers on and see what they look like with my trousers if that makes sense I'll be back really comfortable so I don't know how to show you with a matte little walk these and they fit nice when my trousers actually reach my feet however if you wear maybe a dress I usually wear trousers and tunics so these are perfect but if you were to wear a dress I don't know how they would look let me have a look so let's just pretend I've got a dress on here we go this is if you have a dress and you're showing your legs so they look like that these are a six and a half as I said Europe size 40 these are really comfortable I absolutely love these and just actually just walking around but I am at work today so I'm going to wear them to work and see how I go and should we try that actually should we try the other insole now let's just test them out now and see how each one feels and the differences oh yeah so I've got the soft one on at the minute and you can notice the difference between the soft and the medium with the medium one I feel like I've got more support in my arch than the soft the soft one feels a little bit more flatter so if you're more flat footed I think maybe the soft one would be a better shape for you maybe I'm not an expert in bone structure or feet or arches so please don't quote me on that you might have to just try for yourself and work out what's the best for you but for me right now the medium's winning but I'm gonna try the firm I'm literally just walking up and down so I've got the firm on and you know what the firm I don't know why maybe it's just me and my feet are weird but the firm to me doesn't feel as firm as I thought it feels like it's a combination between medium and soft on my feet so the medium for me feels like it's got a bit more of an arch this is the medium this is the firm so the medium feels like it's got a bit more of an arch so it kind of supports my feet better and I think for me it feels like I'm a medium because that's what feels right for my feet and I notice with my clerks my feet sort of slammed in now I've been wearing them over three years I must have a strange arch or maybe I just walk funny I don't know I think to solve that problem because the medium has this more of an arch on this side these are going to be perfect for me and not only when I'm looking for shoes there are two issues I always have one is comfort and two is a good grip on the sole so these if you look these I've got an amazing grip on the bottom they're really sort of rubbery and these are going to just be perfect especially on certain surface areas like when you're on the ward it can be quite slippy these are going to be I know they're going to be fantastic and I will try these out in clinic because we have that very slippy surface in clinic as well in GP so I'm going to be trying these out so my two things today test them out with the rubber get through the comfort and assess the comfort so right now before I've even tried them on shift these are getting a 10 out of 10 from me these are perfect I'm not bothered about fashionable I'm not bothered about the way I look I want to be comfortable at the end of the day I don't want to end up with sore feet blisters achy legs as well because I haven't got the right footwear I want comfort over any of that so for me these are absolutely perfect so now I'm going to get ready go to work and I will see you after my shift hi everyone so I've just finished my shift I'm really sorry it's really dark and my feet feel amazing these shoes are perfect my feet are so comfortable they're these are really good these just fit absolutely perfect the the sole everything about them is amazing so massive 10 out of 10 these shoes are the ones the only downside I would say with these shoes I think they are a little bit on the higher priced side as always the same as Clark's as well you're going to pay like 60 65 pounds for a decent pair of shoes but they will last you for a long time they feel like a very good material but we shall see as we time goes on I will let you all know for now that is it from me thank you so so much to the company for let me review these and just giving me the opportunity to do this because it's absolutely amazing it's something that needed to be done in nursing because we all need good footwear and as always the links are below just to remind you in the details have a look have a look at the website have a look at the different shoes they have they have more than one pair of shoe as well they have crocs they have wellies all sorts of things so have a look and make your choice